錯誤 返回區域性變數陣列名 解決方案

2021-07-29 13:29:17 字數 668 閱讀 7256

//對於陣列來說,它是乙個區域性變數,是放在棧裡面的,函式返回之後,變數被銷毀,記憶體被**。

#include

char* get_str()

; //錯誤結果

return str;

}int main()

【解決方案】

********************

(1)用字串常量指標代替區域性變數的陣列名

//str指標,其值是乙個常量,而常量是放在資料段裡面的,即便函式返回了,資料段裡面的常量資料也還會在,直到程式結束才會消失

#include

char* get_str()

; //正確結果,因為str指向字串常量

return str;

}int main()

(2)把陣列宣告為全域性的變數

(3)使用靜態陣列,即static

char str = ;

(4)最好的解決方案:在主函式中申請空間,呼叫函式進行字串的賦值操作,最後在主函式中釋放申請的空間。

#include

using

namespace

std;

void f(char* buffer, int size)

int main()

區域性變數錯誤

unboundlocalerror local variable referenced before assignment 在函式外部已經定義了變數n,在函式內部對該變數進行運算,執行時會遇到了這樣的錯誤 主要是因為沒有讓直譯器清楚變數是全域性變數還是區域性變數。如下 片所示 def test if...

函式返回區域性變數

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

函式返回區域性變數

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