你可以在這裡看到,n值超出範圍後,它的位址返回給呼叫者。最終的結果是,對方最終非分配的記憶體位址,它會引起很多問題,如果使用。這是最常見的程式設計錯誤,新的程式設計師。許多新的編譯器會給出乙個警告(不是錯誤)如果程式設計師試圖返回的位址-然而區域性變數,有相當多的方式來欺騙編譯器裡讓你做違法的事情而不產生警告,所以負擔是程式設計師來確保他們返回位址是乙個有效的變數在函式返回。
返回的位址通常是用來返回給呼叫者新分配的記憶體:
123
4567
891011
1213
int* allocatearray(int nsize)
int main()
結論大多數時候,返回值將滿足你的需求。它也返回到呼叫者資訊最靈活和最安全的方法。然而,通過引用或位址返回也可以是有用的,尤其是使用動態分配的類或結構的時候。當使用引用返回或位址,請確保你沒有返回乙個引用,或位址,乙個變數,將超出範圍時,該函式將返回!
Python將函式作為返回值
高階函式除了可以接受函式作為引數外,還可以把函式作為結果值返回。def lazy sum args def sum ax 0 for n in args ax ax n return ax return sum 請再注意一點,當我們呼叫lazy sum 時,每次呼叫都會返回乙個新的函式,即使傳入相同...
將引用作為函式返回值
要以引用返回函式值,則函式定義時必須遵循以下格式 型別識別符號 函式名 形參列表及型別說明 可見,以引用返回函式值,定義函式時需要在函式名前加 引用作為函式的返回值時,函式的返回值可以理解為函式返回了乙個變數 事實上,函式返回引用時,它返回的是乙個指向返回值的隱式指標 因此,值為引用的函式可以用作賦...
將「引用」作為函式返回值型別
格式 型別識別符號 函式名 形參列表及型別說明 好處 在記憶體中不產生被返回值的副本 注意 正是因為這點原因,所以返回乙個 區域性變數的引用是不可取的。因為隨著該 區域性變數生存期的結束,相應的引用也會失效,產生runtime error 注意事項 1 不能返回 區域性變數的引用。這條可以參照eff...