Penugasan Semula Rujukan dalam C
Mengisytiharkan rujukan dalam C memerlukan permulaan, menimbulkan tanggapan bahawa rujukan tidak boleh diubah dan tidak boleh ditetapkan semula. Walau bagaimanapun, pertimbangkan program berikut:
#include <iostream> using namespace std; int main() { int i = 5, j = 9; int &ri = i; cout << "ri is : " << ri << '\n'; i = 10; cout << "ri is : " << ri << '\n'; ri = j; // Is this not reassigning the reference? cout << "ri is : " << ri << '\n'; return 0; }
Kod berjaya menyusun dan menghasilkan output yang diharapkan:
ri is : 5 ri is : 10 ri is : 9
Bertentangan dengan kepercayaan popular, baris ri = j tidak menetapkan semula rujukan ri. Sebaliknya, ia mengubah suai nilai i melalui rujukan ri, seperti yang dibuktikan dengan mencetak i sebelum dan selepas baris. Tingkah laku ini disokong oleh fakta bahawa &ri dan &i mencetak alamat yang sama, menunjukkan bahawa ri kekal sebagai rujukan kepada i.
Sebaliknya, mengisytiharkan rujukan tetap (const int &cri = i) menghalang penugasan semula rujukan sendiri.
Atas ialah kandungan terperinci Bolehkah Rujukan C Ditugaskan Semula, atau Adakah Ia Hanya Pengubahsuaian Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!