Rumah >pembangunan bahagian belakang >C++ >Mengapakah `t`, `&t[0]` dan Penunjuk ke `t` Mempunyai Alamat Yang Sama?
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!