Rumah >pembangunan bahagian belakang >C++ >Mengapa Tatasusunan Rujukan Dilarang dalam C ?
Susun Rujukan dan Piawaian C
Dalam C , percubaan untuk mengisytiharkan tatasusunan rujukan, seperti dalam coretan kod berikut, akan mengakibatkan ralat penyusunan:
int a = 1, b = 2, c = 3; int& arr[] = {a,b,c,8};
Ini dilarang secara jelas oleh C Standard, yang menyatakan dalam §8.3.2/4 bahawa "Tidak boleh ada rujukan kepada rujukan, tiada tatasusunan rujukan, dan tiada penunjuk kepada rujukan."
Mengapa Susunan Rujukan Haram?
Sebab larangan ini terletak pada sifat rujukan. Tidak seperti objek, yang menduduki memori dan mempunyai alamat, rujukan adalah alias untuk objek lain. Mereka tidak mempunyai kewujudan bebas dan tidak menguasai ingatan sendiri.
Maka, pelbagai rujukan akan menjadi pelbagai penunjuk kepada objek, yang boleh membawa kepada kekeliruan dan masalah pengurusan memori yang berpotensi. Contohnya, jika objek yang ditunjuk oleh rujukan akan dipadamkan, rujukan akan menjadi berjuntai dan tatasusunan boleh mengandungi data yang tidak sah.
Simulasi Tatasusunan Rujukan
Walaupun mencipta tatasusunan rujukan sebenar tidak dibenarkan dalam C , terdapat cara untuk mensimulasikan tingkah laku mereka menggunakan teknik lain. Satu pendekatan biasa ialah menggunakan kelas yang mengandungi pembolehubah ahli rujukan, seperti yang ditunjukkan dalam kod berikut:
struct cintref { cintref(const int &ref) : ref(ref) {} operator const int &() { return ref; } private: const int &ref; void operator=(const cintref &); }; int main() { int a=1,b=2,c=3; cintref arr[] = {a,b,c,8}; }
Ini membolehkan kami mencipta tatasusunan objek yang setiap satu mengandungi rujukan kepada pembolehubah integer. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini bukan tatasusunan rujukan yang sebenar melainkan tatasusunan objek yang menyimpan rujukan.
Atas ialah kandungan terperinci Mengapa Tatasusunan Rujukan Dilarang dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!