Rumah > pembangunan bahagian belakang > C++ > Bolehkah Rujukan C Ditugaskan Semula, atau Adakah Perkara Lain Berlaku?

Bolehkah Rujukan C Ditugaskan Semula, atau Adakah Perkara Lain Berlaku?

Susan Sarandon
Lepaskan: 2024-12-04 22:07:13
asal
403 orang telah melayarinya

Can C   References Be Reassigned, or Is Something Else Happening?

Bolehkah Rujukan Ditugaskan Semula dalam C ?

Dalam C , rujukan sering disebut-sebut sebagai entiti tidak berubah yang mesti dimulakan sekali dan untuk semua. Walau bagaimanapun, coretan kod terbaharu telah menimbulkan persoalan tentang prinsip ini.

Coretan Kod:

int i = 5, j = 9;
int &ri = i;
cout << "ri is : " << ri << "\n";
i = 10;
cout << "ri is : " << ri << "\n";
ri = j;
cout << "ri is : " << ri << "\n";
Salin selepas log masuk

Pemerhatian:

  • Kod berjaya disusun tanpa ralat.
  • Output menunjukkan bahawa ri pada mulanya menunjuk kepada i dan kemudian berubah untuk merujuk kepada j.

Soalan:

Adakah kod ini benar-benar menetapkan semula rujukan ri atau sesuatu yang lain berlaku?

Jawapan:

Tidak, ri masih merujuk kepada i. Penugasan semula yang nyata sebenarnya adalah pengubahsuaian i melalui rujukan ri.

Penjelasan:

Apabila rujukan diisytiharkan (cth., int &ri = i), ia mengikat kepada objek (i dalam kes ini) dan kekal dipautkan kepadanya sepanjang program. Kod ri = j tidak menetapkan semula ri tetapi mengubah suai nilai i melalui rujukan ri.

Untuk membuktikan ini, seseorang boleh mencetak alamat ri dan i menggunakan &ri dan &i, yang akan menunjukkan ia kekal yang sama. Selain itu, jika ri ditugaskan semula kepada j, ia tidak lagi boleh mengubah suai i melalui ri, yang tidak berlaku dalam kod yang diberikan.

Kesimpulan:

Walaupun rujukan nampaknya boleh ditetapkan semula dalam coretan kod, ia tidak. Sebaliknya, mereka secara tidak langsung mengubah suai objek yang mereka rujuk. Rujukan const (cth., const int &cri = i) menghalang pengubahsuaian tersebut dan menguatkuasakan kebolehubahan sebenar.

Atas ialah kandungan terperinci Bolehkah Rujukan C Ditugaskan Semula, atau Adakah Perkara Lain Berlaku?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan