Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Rujukan Berjuntai dalam C Boleh Dielakkan?

Bagaimanakah Rujukan Berjuntai dalam C Boleh Dielakkan?

Linda Hamilton
Linda Hamiltonasal
2024-11-24 06:54:15903semak imbas

How Can Dangling References in C   Be Avoided?

Ralat Rujukan Berjuntai

Dalam C , rujukan berjuntai berlaku apabila rujukan merujuk kepada objek yang tidak wujud lagi. Ini boleh membawa kepada ralat masa jalan jika rujukan digunakan.

Pertimbangkan coretan kod berikut:

int& bar() {
    int n = 10;
    return n;
}

int main() {
    int& i = bar();
    cout << i << endl;
    return 0;
}

Kod ini mengembalikan rujukan kepada pembolehubah setempat n dalam fungsi bar(). Walau bagaimanapun, apabila fungsi bar() kembali, pembolehubah tempatan n dimusnahkan, meninggalkan rujukan i tergantung. Percubaan untuk menggunakan i akan mengakibatkan ralat masa jalan.

Mengelakkan Rujukan Berjuntai

Untuk mengelakkan rujukan berjuntai, anda mesti memastikan objek yang dirujuk kekal sah sepanjang hayat rujukan. Ini boleh dicapai dengan menggunakan pembolehubah statik atau global:

int& bar() {
    static int n = 10;
    return n;
}

int main() {
    int& i = bar();
    cout << i << endl;
    return 0;
}

Dalam kod yang diubah suai ini, pembolehubah n diisytiharkan sebagai pembolehubah statik dalam bar(). Ini memastikan n kekal sah walaupun selepas fungsi kembali. Akibatnya, rujukan i juga sah dan boleh digunakan dengan selamat.

Atas ialah kandungan terperinci Bagaimanakah Rujukan Berjuntai dalam C Boleh Dielakkan?. 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