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.
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!