傳回局部變數的引用
在C 中,通常不鼓勵傳回局部變數的引用,因為它可能導致懸空參考。然而,在某些情況下,它可能仍然有效,如下例所示:
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; }
此程式碼編譯並運行沒有錯誤,並且列印:
0xfefef2 6 0x7ffe82600698
相反如預期的那樣,在foo() 呼叫返回後,main() 中的變數i 仍然保留值6。這是因為,在這種情況下,編譯器已將局部變數的生命週期延長到 foo() 函數末尾之後。
此行為是特定於實現的,不應依賴。一般來說,避免傳回局部變數的引用被認為是很好的做法。如果需要傳回局部變數的值,最好按值傳回。
以上是為什麼通常不鼓勵傳回對本地 C 變數的引用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!