C語言中如何傳遞函式內的區域性變數

2021-09-27 16:54:16 字數 282 閱讀 3254

有一種寫法,可以用乙個返回指標來返回區域性變數

int* example () //end example
這種寫法在編譯時可以通過,但在實際執行中,程式會在這裡崩潰。

究其原因,主要是因為c語言中,區域性變數將被儲存在棧中。在函式呼叫結束後,棧中元素的生命週期也到了盡頭。而此時傳遞出去的指標就成了乙個野指標。

而這個問題可以用static 修飾區域性變數將區域性變數也儲存到全域性資料區,藉此就可以解決區域性變數生命週期隨函式呼叫結束而終結的問題。保證了程式的有效執行。

C語言中的函式傳遞

1當函式引數的引數型別是double float int char的時候 傳參是值傳遞 是將實參的支付只給了形參,所以在內部修改形參的時候,不會對實參有影響 2當函式引數是陣列的時候 傳遞的是實參陣列的位址,所以會改變實參的資料 這樣的傳遞叫位址傳遞活引用傳遞 3當函式的引數是指標時候 傳入的實參必...

C語言 函式內區域性陣列

直接看這個例子 void test 對於上面的test函式,如果連續呼叫兩次,會得到什麼樣的輸出 答案是 abcabc abc這是我實際測出的值,我當時很迷惑,為什麼b是區域性陣列,當函式結束時這部分記憶體就被釋放了,而第二次呼叫test時,b陣列的值仍然是abc.可能有人說區域性陣列是存放在靜態儲...

C語言 函式內區域性陣列

直接看這個例子 void test 對於上面的test函式,如果連續呼叫兩次,會得到什麼樣的輸出 答案是 abcabc abc這是我實際測出的值,我當時很迷惑,為什麼b是區域性陣列,當函式結束時這部分記憶體就被釋放了,而第二次呼叫test時,b陣列的值仍然是abc.可能有人說區域性陣列是存放在靜態儲...