Heim > Backend-Entwicklung > C++ > Warum haben „t', „&t[0]' und ein Zeiger auf „t' dieselbe Adresse?

Warum haben „t', „&t[0]' und ein Zeiger auf „t' dieselbe Adresse?

Susan Sarandon
Freigeben: 2024-11-26 08:12:09
Original
143 Leute haben es durchsucht

Why Do `t`, `&t[0]`, and a Pointer to `t` Have the Same Address?

Warum t, &t[0] und t, die in einen Zeiger konvertiert werden, dieselbe Adresse haben

Ein Array ist ein zusammenhängender Speicherblock Elemente desselben Datentyps enthalten. Wenn Sie ein Array deklarieren, weist der Compiler einen Speicherblock zu und erstellt Zeiger auf jedes Element innerhalb dieses Blocks.

Fall 1: t und &t[0]

Wenn Sie t alleine verwenden (ohne Indizes), wird eine Array-zu-Zeiger-Konvertierung durchgeführt, die einen Zeiger auf das erste Element des Arrays generiert. Dieses Verhalten entspricht der Verwendung von &t[0], das explizit die Adresse des ersten Elements zurückgibt. Daher haben t und &t[0] den gleichen Wert.

Fall 2: &t

Wenn Sie jedoch den &-Operator auf t anwenden, ist dies nicht der Fall löst die Array-zu-Zeiger-Konvertierung aus. Stattdessen übernimmt &t direkt die Adresse von t selbst, was zu einem Zeiger auf das gesamte Array führt.

Im Speicher befinden sich das erste Element des Arrays und der Anfang des Arrays an derselben Stelle. Daher haben die Zeiger t, &t[0] und u (was ein Zeiger auf t ist) alle dieselbe Adresse.

Erklärung der Ausgabe:

Die gegebene Code zeigt dieses Verhalten:

int t[10];
int * u = t;

cout << t << " " << &t << endl;
cout << u << " " << &u << endl;
Nach dem Login kopieren

Ausgabe:

0045FB88 0045FB88
0045FB88 0045FB7C
Nach dem Login kopieren

Die Ausgabe zeigt das t, &t[0] und u haben den gleichen Wert (0045FB88), was ihre Äquivalenz als Zeiger bestätigt.

Das obige ist der detaillierte Inhalt vonWarum haben „t', „&t[0]' und ein Zeiger auf „t' dieselbe Adresse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage