Mengembalikan Rujukan kepada Pembolehubah Setempat
Dalam C , mengembalikan rujukan kepada pembolehubah tempatan secara amnya tidak digalakkan kerana ia boleh menyebabkan ketergantungan rujukan. Walau bagaimanapun, dalam keadaan tertentu, ia mungkin masih kelihatan berfungsi, seperti dalam contoh di bawah:
int& foo() { int i = 6; std::cout << &i << std::endl; return i; } int main() { int i = foo(); std::cout << i << std::endl; std::cout << &i << std::endl; }
Kod ini menyusun dan berjalan tanpa ralat dan ia mencetak:
0xfefef2 6 0x7ffe82600698
Berlawanan kepada jangkaan, pembolehubah i dalam main() masih memegang nilai 6 selepas panggilan ke foo() telah kembali. Ini kerana, dalam kes ini, pengkompil telah memanjangkan hayat pembolehubah tempatan melepasi penghujung fungsi foo().
Tingkah laku ini khusus pelaksanaan dan tidak boleh dipercayai. Secara umum, ia dianggap sebagai amalan yang baik untuk mengelakkan rujukan kembali kepada pembolehubah tempatan. Jika anda perlu mengembalikan nilai pembolehubah setempat, lebih baik untuk mengembalikannya mengikut nilai.
Atas ialah kandungan terperinci Mengapa Mengembalikan Rujukan kepada Pembolehubah C Tempatan Umumnya Tidak Digalakkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!