函式返回區域性變數的問題

2022-08-03 10:27:09 字數 423 閱讀 7078

1.函式可以返回區域性變數

當函式的區域性變數作為函式的返回值時,其實是不知道是誰(是程式?)會自動生成乙個變數的副本即拷貝作為函式的返回值,而原有的區域性變數將被銷毀。

注意函式不可以返回區域性變數的位址或者某個指標,以為當函式執行完了(這裡改咋說),系統會**這塊位址,因此這個位址裡面 的東西也就沒有意義了。

靜態變數可以返回指標。

2.int a = ;

return a;

此時也會返回指標a的乙個拷貝,若a的位址值為0x002345fc,則0x2345fc是能夠成功返回的。當return執行完成後,a就要被銷毀,也就是0x002345fc所指向的記憶體被**了。如果這時候在函式外面,比如int p=*a;去位址0x002345fc取值,那得到的結果肯定是不對的。

返回區域性變數的引用也是同樣的道理吼吼吼。

學習自:

函式返回區域性變數的問題

1.返回區域性變數的值 可以有兩種情況 返回區域性自動變數和區域性靜態變數,比如,int func 區域性變數temp儲存在棧中,函式返回時會自動複製乙份temp的copy給呼叫者,沒有問題。int func 區域性變數a儲存在靜態 全域性 儲存區中,從初始化後一直有效直到程式結束,僅分配一次記憶體...

函式返回區域性變數

一般的來說,函式是可以返回區域性變數的。區域性變數的作用域只在函式內部,在函式返回後,區域性變數的記憶體已經釋放了。因此,如果函式返回的是區域性變數的值,不涉及位址,程式不會出錯。但是如果返回的是區域性變數的位址 指標 的話,程式執行後會出錯。因為函式只是把指標複製後返回了,但是指標指向的內容已經被...

函式返回區域性變數

函式返回區域性變數 一般的來說,函式是可以返回區域性變數的。區域性變數的作用域 只在函式內部,在函式返回後,區域性變數的記憶體已經釋放了。因此,如果函式返回的是區域性變數的值,不涉及位址,程式不會出錯。但是如果返回的是區域性變數的位址 指標 的話,程式執行後會出錯。因為 函式只是把指標複製後返回了,...