Nein, nicht irgendwo in der Nähe.
Der C-Standard garantiert nicht, dass die Funktionsargumente in aufeinanderfolgenden Speicherplätzen gespeichert werden (oder eine andere spezifische Reihenfolge,). Es ist Sache des Compilers und/oder der Plattform (Architektur) zu entscheiden, wie die Funktionsargumente an die Funktion übergeben werden.
Um noch mehr Klarheit zu geben, gibt es sogar keine Garantie, dass die Argumente, die zu übergeben sind, überhaupt im Speicher (z. B. Stapel) gespeichert werden. Sie können auch die Hardware-Register (, wenn anwendbar), für einige oder alle Parameter verwenden, um die Operationen schnell zu machen. Zum Beispiel
PowerPC
Die PowerPC-Architektur verfügt über eine große Anzahl von Registern so dass die meisten Funktionen alle Argumente in den Registern für einzelne Ebene Anrufe passieren können. [...]
MIPS
Die am häufigsten verwendete Aufrufkonvention für 32-Bit-MIPS ist das O32 ABI, die auf eine Funktion, die ersten vier Argumente gelangen in den Registern $a0
- $a3
; nachfolgende Argumente werden auf dem Stapel übergeben. [...]
X86
Die x86-Architektur ist mit vielen verschiedenen Aufrufkonventionen verwendet. Aufgrund der geringen Anzahl von Architekturregistern übergibt die x86-Aufrufkonvention hauptsächlich Argumente auf dem Stapel, während der Rückgabewert (oder ein Zeiger darauf) in einem Register übergeben wird.
und so weiter. Überprüfen Sie die full wiki article here.
also in Ihrem Fall ist bars[0]
ein gültig Zugang, aber ob bars[1]
und bars[2]
gültig sind, hängt von der zugrunde liegenden Umgebung (Plattform/Compiler), vollständig. Am besten verlassen Sie sich nicht auf das Verhalten, das Sie erwarten.
Das heißt, nur nitpick, falls Sie die Argumente nicht benutzen (falls vorhanden) zu main()
geben, können Sie einfach die Signatur int main(void) {
reduzieren.
Sie möchten Ihre Neugier befriedigen, oder haben Sie ein Problem, von dem Sie glauben, dass es das löst? – StoryTeller
Nur aus Neugier, da variadic Argumente diese Technik verwenden, um über seine Argumente zu iterieren. –