1樓:
通常的返回機制將返回值複製到臨時儲存區域中, 隨後呼叫程式將訪問該區域.
返回引用則程式則呼叫程式將直接訪問返回值.
通常引用將指向傳遞給函式的引用, 因此呼叫函式實際上是直接訪問自己的一個變數.
比如const int& fun (int& a, const int& b)
int x = 1, y = 2, z;
z = fun(x, y);
//等價於 fun(x, y); z = x;
而且返回引用不能返回函式內部的臨時變數, 因為該變數隨著函式的結束而銷燬, 返回值會毫無意義, 如
const int& fun (int& a, const int& b)
//該程式會崩潰, 因為變數c隨著程式的結束而銷燬, 繼而返回的c的同名物件毫無意義
2樓:嚴棠偉雨筠
如果返回值,那麼記憶體中只有兩個儲存該整形資料的單元,一個是函式中生成的被返回的整形資料,一個是接收以後的整形資料,而返回引用則只要一格單元來儲存這個整形資料,被返回的和接收到的都是同一個整形資料。
c++ 引用返回值 與 返回指標
3樓:匿名使用者
int * d = &c;
也就是*d就等效於c了啊
也就是return *d;
就等效於
return c;
4樓:匿名使用者
*d是指標d指向的資料,你的寫法中,指標d指向了引用c的位置,其實也就是傳入實參a的地址空間上的資料,故而是一直存在且可以正確返回的。如果你在k()函式內部不是使用傳輸的c(也就是換個變數名,什麼都行),那自然就不可以了,出了這個函式就被釋放了
5樓:匿名使用者
return *d;你返回的是指標d指向的值,並不是返回的指標...return d;才是返回的指標 int*...而你h函式返回值型別是int& 也相當於int 這時候編譯的話c++應該會報錯,因為c++編譯器檢查型別很嚴格 c編譯器裡面雖然沒有引用,int* 返回成int 可能會報警告,因為指標儲存的地址也是一個數..
有的會報錯...
區域性變數是不能返回成引用的...引用的實質相當於給變數弄了個別名,然後通過別名去找這個變數...而區域性變數的記憶體空間在函式結束後就被**了,也就是這個變數不存在了,那麼它的別名還有什麼意義....
C 中的返回值是什麼,C 中的返回值是什麼
溫啟勇思 首先,c語言中的函式有兩種形式 1 有返回值,2 無返回值。有返回值的函式會把執行的結果 也就是你寫這個函式的目的 返回到主函式中。沒有返回值的函式主要是為了完成某種任務 其實這是廢話,函式的功能就是為了完成某種任務。而一般沒有任何值返回到主函式中 也可以通過在無返回值的函式中操作全域性變...
C 函式返回型別是引用的問題,C 函式返回值為引用型別時出錯!大神進!
引用就是變數的別名,返回c3的引用,返回的就是c3 c3被清除,再呼叫c3的函式,結果當然不正確 如果返回 i 後,i被清除,但是返回值已經被輸出了,結果是正確的 返回c型別,g函式返回 的是c型別的一個物件,雖然c3被清除,但是返回的物件還能呼叫get函式 你可以在c類中增加一個解構函式,除錯執行...
C 程式設計中返回值問題,c 獲得外部程式返回值的問題
如果函式有返回值,則需要返回語句return。return語句的一般形式是 return 表示式 執行時,先計算出括號中表示式的值,再將該值返回給主調函式中的呼叫表示式。下面對return語句做一些說明 1 函式的返回值是通過函式中的 return 語句獲得的。return 語句將被呼叫函式中的一個...