Rumah >pembangunan bahagian belakang >C++ >Mengapakah `t`, `&t[0]` dan Penunjuk ke `t` Mempunyai Alamat Yang Sama?

Mengapakah `t`, `&t[0]` dan Penunjuk ke `t` Mempunyai Alamat Yang Sama?

Susan Sarandon
Susan Sarandonasal
2024-11-26 08:12:09135semak imbas

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

Mengapa t, &t[0], dan t Ditukar kepada Penunjuk Mempunyai Alamat Yang Sama

Susun atur ialah blok memori bersebelahan mengandungi elemen jenis data yang sama. Apabila anda mengisytiharkan tatasusunan, pengkompil memperuntukkan blok memori dan mencipta penunjuk kepada setiap elemen dalam blok itu.

Kes 1: t dan &t[0]

Apabila anda menggunakan t sendiri (tanpa sebarang subskrip), ia mengalami penukaran tatasusunan ke penuding, yang menjana penuding kepada elemen pertama tatasusunan. Tingkah laku ini bersamaan dengan menggunakan &t[0], yang secara eksplisit mengembalikan alamat elemen pertama. Oleh itu, t dan &t[0] mempunyai nilai yang sama.

Kes 2: &t

Walau bagaimanapun, apabila anda menggunakan operator & pada t, ia tidak mencetuskan penukaran tatasusunan ke penuding. Sebaliknya, &t mengambil alamat t itu sendiri secara langsung, menghasilkan penuding kepada keseluruhan tatasusunan.

Dalam ingatan, elemen pertama tatasusunan dan permulaan tatasusunan berada di lokasi yang sama. Oleh itu, penunjuk t, &t[0] dan u (yang merupakan penunjuk kepada t) semuanya mempunyai alamat yang sama.

Penjelasan Output:

Yang diberikan kod menunjukkan tingkah laku ini:

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

cout << t << " " << &t << endl;
cout << u << " " << &u << endl;

Output:

0045FB88 0045FB88
0045FB88 0045FB7C

Output menunjukkan bahawa t, &t[0], dan u mempunyai nilai yang sama (0045FB88), mengesahkan kesetaraan mereka sebagai penunjuk.

Atas ialah kandungan terperinci Mengapakah `t`, `&t[0]` dan Penunjuk ke `t` Mempunyai Alamat Yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn