Rumah > pembangunan bahagian belakang > C++ > Mengapa Anda Tidak Boleh Mengisytiharkan Susunan Rujukan dalam C ?

Mengapa Anda Tidak Boleh Mengisytiharkan Susunan Rujukan dalam C ?

DDD
Lepaskan: 2024-12-04 17:10:13
asal
168 orang telah melayarinya

Why Can't You Declare an Array of References in C  ?

Susun Rujukan dalam C : Dijelaskan dengan Rujukan Standard

Pertimbangkan kod berikut:

int a = 1, b = 2, c = 3;
int& arr[] = {a,b,c,8};
Salin selepas log masuk

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};
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan