Mengembalikan Rujukan kepada Pembolehubah Setempat
Coretan kod di bawah mengembalikan rujukan kepada pembolehubah setempat, yang secara amnya dianggap sebagai amalan buruk dalam C :
int& foo() { int i = 6; return i; }
Kod ini akan berfungsi seperti yang diharapkan, memberikan nilai pembolehubah tempatan i kepada i dalam fungsi utama. Walau bagaimanapun, ini boleh membawa kepada gelagat tidak ditentukan kerana memori pembolehubah tempatan dibebaskan apabila fungsi kembali.
Anda mungkin tertanya-tanya bagaimana ini masih berfungsi, kerana pembolehubah tempatan dialih keluar daripada memori tindanan apabila fungsi dikembalikan. Sebabnya ialah bingkai tindanan untuk fungsi itu tidak selalu dipadamkan serta-merta selepas kembali. Ini bermakna bahawa rujukan yang dikembalikan oleh foo() masih sah selepas fungsi selesai dilaksanakan.
Anda harus sedar bahawa tingkah laku ini tidak dijamin dan mungkin berbeza-beza bergantung pada tetapan pengkompil dan pengoptimuman. Oleh itu, sebaiknya elakkan daripada mengembalikan rujukan kepada pembolehubah setempat dan sebaliknya mengembalikan salinan data jika perlu.
Atas ialah kandungan terperinci Mengapa Mengembalikan Rujukan kepada Pembolehubah Setempat dalam C Dianggap Amalan Buruk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!