C語言指標作為函式返回值時值丟失

2021-09-02 15:23:05 字數 424 閱讀 9541

今天程式設計時遇到乙個很納悶的問題,乙個指標中的內容在傳遞過程中值突然丟失了。

同時在程式編譯的時候也有乙個warning

其具體資訊如下:

warning: function returns address of local variable [enabled by default]
警告資訊表示,函式返回了乙個區域性變數位址,這就是造成返回值丟失的原因。

在c/c++程式設計時不要返回區域性物件的引用或指標,因為函式完成後,它所佔的儲存空間也隨之釋放掉。因此,函式終止意味著區域性變數的引用將指向不再有效的記憶體區域。

函式返回位址都是不安全的,因為函式結束後,函式的記憶體都會變釋放,因此這個位址其他運用程式也可以用到,會被修改。

只要返回的是個位址,就不安全。當作業系統把這個記憶體分配給其他程式時,就會被修改。

用C語言指標作為函式返回值

c語言允許函式的返回值是乙個指標 位址 我們將這樣的函式稱為 指標函式。下面的例子定義了乙個函式 strlong 用來返回兩個字串中較長的乙個 複製 純文字複製 include include char strlong char str1,char str2 else int main includ...

指標作為函式返回值

c語言允許函式的返回值是乙個指標 位址 我們將這樣的函式稱為指標函式。下面的例子定義了乙個函式 strlong 用來返回兩個字串中較長的乙個 include include char strlong char str1,char str2 else int main 執行結果 c language ...

函式作為返回值

就像常見的函式一樣,lambda 表示式可以返回乙個函式指標 委託例項 這就意味著我們能夠使用乙個 lambda 表示式來建立並返回另乙個 lambda 表示式。這種行為在很多場景下都是非常有用的。我們先來看下面這個例子 1 func saymyname string language 2 10ca...