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
Susan SarandonOriginal
2024-11-26 08:12:09148Durchsuche

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;

Ausgabe:

0045FB88 0045FB88
0045FB88 0045FB7C

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!

Stellungnahme:
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