Susun Rujukan dalam C : Dijelaskan dengan Rujukan Standard
Pertimbangkan kod berikut:
int a = 1, b = 2, c = 3; int& arr[] = {a,b,c,8};
Kod ini tidak menyusun. kenapa? Mari terokai piawaian C untuk mencari jawapannya.
Bimbingan Standard C
Mengikut Piawaian C §8.3.2/4:
" Tiada rujukan kepada rujukan, tiada tatasusunan rujukan, dan tiada penunjuk kepada rujukan."
Penaakulan di sebalik Sekatan
Sekatan ini dilaksanakan kerana rujukan bukanlah objek dalam pengertian tradisional. Mereka pada dasarnya adalah alias kepada objek dan tidak menduduki memori, oleh itu mereka tidak mempunyai alamat. Akibatnya, mengisytiharkan tatasusunan rujukan tidak masuk akal kerana tiada tatasusunan objek untuk dirujuk.
Pendekatan Alternatif
Jika anda perlu mensimulasikan tatasusunan rujukan , anda boleh mencipta kelas yang merangkum rujukan, seperti yang ditunjukkan dalam yang berikut contoh:
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}; }
Pendekatan ini pada asasnya mensimulasikan tatasusunan rujukan dengan mencipta tatasusunan objek kelas cintref. Setiap objek memegang rujukan kepada pembolehubah integer yang sepadan.
Atas ialah kandungan terperinci Mengapa Anda Tidak Boleh Mengisytiharkan Susunan Rujukan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!