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
Lepaskan: 2024-12-08 18:12:12
asal
888 orang telah melayarinya

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

Kod ini menyusun dan berjalan tanpa ralat dan ia mencetak:

0xfefef2
6
0x7ffe82600698
Salin selepas log masuk

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!

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