Bagaimanakah Rujukan Berjuntai dalam C Boleh Dielakkan?

Linda Hamilton
Lepaskan: 2024-11-24 06:54:15
asal
758 orang telah melayarinya

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

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

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!

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