Rumah >pembangunan bahagian belakang >C++ >Mengapa Alamat Tatasusunan Sama dengan Penunjuk kepada Elemen Pertamanya dalam C?
Menyahkod Penukaran Tatasusunan-ke-Tuding: Mengapa Alamat Tatasusunan Sama Penunjuk dengan Elemen Pertama
Dalam C , konsep tatasusunan- penukaran kepada-penunjuk boleh membawa kepada pemerhatian yang kelihatan pelik: alamat tatasusunan adalah sama dengan tatasusunan yang ditukar kepada penuding. Untuk merungkai fenomena ini, mari kita rungkai coretan kod berikut:
int t[10]; int *u = t; cout << t << " " << &t << endl; cout << u << " " << &u << endl;
Output:
0045FB88 0045FB88 0045FB88 0045FB7C
Walaupun output untuk penuding u masuk akal, memahami kesetaraan t, &t, dan &t[0] mungkin kelihatan membingungkan. Menyelidiki selok-belok penukaran tatasusunan-ke-penunjuk memberi penerangan tentang tingkah laku ini.
Penukaran Tatasusunan-ke-Tuding
Apabila menggunakan t sendiri dalam ungkapan , penukaran automatik daripada jenis tatasusunan kepada jenis penuding berlaku, menghasilkan penuding kepada elemen pertama tatasusunan. Penukaran ini membenarkan merawat tatasusunan sebagai penuding.
Mengambil Alamat Pembolehubah
Apabila operator & digunakan dengan t, tiada tatasusunan-ke-penunjuk tersirat penukaran berlaku. Sebaliknya, operator & secara eksplisit memperoleh alamat t itu sendiri, menghasilkan penuding kepada keseluruhan tatasusunan.
Kesetaraan Kedudukan
Elemen pertama tatasusunan menduduki lokasi memori yang sama sebagai permulaan tatasusunan secara keseluruhan. Kesetaraan kedudukan ini menerangkan mengapa alamat t (tatasusunan), &t (penunjuk kepada tatasusunan) dan &t[0] (penunjuk kepada elemen pertama) semuanya mempunyai nilai yang sama.
Pada dasarnya, penukaran tatasusunan ke penuding menyediakan cara untuk mengakses elemen tatasusunan individu melalui penuding manakala &t memberikan akses kepada tatasusunan sebagai satu entiti. Dualiti mewakili tatasusunan sebagai blok bersebelahan dan sebagai pengagregatan elemen individu adalah asas untuk memanfaatkan tatasusunan secara berkesan dalam kod C.
Atas ialah kandungan terperinci Mengapa Alamat Tatasusunan Sama dengan Penunjuk kepada Elemen Pertamanya dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!