Rumah >pembangunan bahagian belakang >C++ >Bolehkah Rujukan C Ditugaskan Semula, atau Adakah Ia Hanya Pengubahsuaian Nilai?

Bolehkah Rujukan C Ditugaskan Semula, atau Adakah Ia Hanya Pengubahsuaian Nilai?

Barbara Streisand
Barbara Streisandasal
2024-12-05 01:34:11739semak imbas

Can C   References Be Reassigned, or is it Just Value Modification?

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!

Kenyataan:
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