Verstehen der Äquivalenz von Array-Adressen und konvertierten Zeigern
In der Programmiersprache C ist es eine gängige Praxis, ein Array in ein zu konvertieren Zeiger auf sein erstes Element mithilfe der Array-zu-Zeiger-Konvertierung. Dies wirft die Frage auf, warum die Adresse des Arrays mit der Adresse des konvertierten Zeigers übereinstimmt.
Um dieses Konzept zu veranschaulichen, betrachten wir den folgenden Code:
int t[10]; int *u = t; cout << t << " " << &t << endl; cout << u << " " << &u << endl;
Die Ausgabe Dieser Code demonstriert die Äquivalenz von Array-Adressen und konvertierten Zeigeradressen:
0045FB88 0045FB88 0045FB88 0045FB7C
Um dieses Phänomen zu verstehen, müssen wir zwei unterschiedliche Bedeutungen erkennen, die mit dem Symbol verbunden sind t:
In unserem Code zeigt die erste Zeile der Ausgabe die Adresse von t (dem Array) und die Adresse von &t ( der Zeiger auf das Array). Da Arrays zusammenhängende Speicherblöcke sind, sind ihre Startadressen identisch.
Die zweite Ausgabezeile zeigt die Adresse von u (den konvertierten Zeiger auf das erste Element) und die Adresse von &u (den Zeiger auf das konvertierte Element). Zeiger). Auch hier sind diese Adressen dieselben, da u im Wesentlichen äquivalent zu &t[0] ist.
Daher schließen wir, dass der Grund dafür ist, dass die Adresse eines Arrays derselbe ist wie die Adresse des in einen Zeiger umgewandelten Arrays weil beide die Startadresse des zusammenhängenden Speicherblocks darstellen, der vom Array belegt wird. Diese Äquivalenz gilt, weil die Array-zu-Zeiger-Konvertierung einen Zeiger auf das erste Element des Arrays erzeugt, das denselben Speicherort hat wie der Anfang des gesamten Arrays.
Das obige ist der detaillierte Inhalt vonWarum entspricht die Adresse eines Arrays in C der Adresse eines Zeigers auf sein erstes Element?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!