Rumah >pembangunan bahagian belakang >C++ >Mengapa Mengembalikan Rujukan kepada Pembolehubah C Tempatan Umumnya Tidak Digalakkan?

Mengapa Mengembalikan Rujukan kepada Pembolehubah C Tempatan Umumnya Tidak Digalakkan?

Patricia Arquette
Patricia Arquetteasal
2024-12-08 18:12:12893semak imbas

Why is Returning a Reference to a Local C   Variable Generally Discouraged?

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!

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