千萬不能返回區域性變數的引用??

2021-06-18 21:56:12 字數 439 閱讀 7394

c++ primer第7章函式一節,講到返回時,「理解返回引用至關重要的是,千萬不能返回區域性變數的引用」,

意思是返回程式內部定義的變數時可能會出問題,因為當函式執行完畢後,將釋放分配給區域性物件的儲存空間。

此時,對區域性物件的引用就會指向不確定的記憶體。

覺得不能理解。

比如求階乘時,可以使用迭代函式的方法,程式很簡單,**如下:

#include

using namespace std;

long factorial(int n)

int main()

我在函式中定義的result必然是區域性變數,但是作為結果,我必須將這個值返回,所以是不是我就違反了千萬不能返回區域性變數的引用呢,按照書上所說,rensult變數在函式執行完畢後空間就會被釋放,那麼這段程式就是錯的。可是既然程式能執行出正確的結果,那就必然是正確的,真的很矛盾啊。

不能返回區域性變數的引用

源之 int add1 int a,int b int add2 int a,int b 請問這兩個函式返回有什麼區別,是乙個返回副本,另乙個直接返回嗎?呼叫函式add2有什麼危險嗎?add1的確返回了乙個副本,如果sum是自定義的類型別,可以很明顯看出拷貝建構函式在返回時被呼叫,對於內建型別沒什麼...

引用與區域性變數的返回問題

今天剛相對徹底的搞懂函式返回區域性普通變數 不包括指標和引用 與區域性指標 引用的返回區別,先看下面 include include using namespace std string version1 const string s1,const string s2 const string ve...

引用與區域性變數的返回問題

今天剛相對徹底的搞懂函式返回區域性普通變數 不包括指標和引用 與區域性指標 引用的返回區別,先看下面 include include using namespace std string version1 const string s1,const string s2 const string ve...