C 入門教程(四十三) 返回值使用引用

2021-08-18 05:02:45 字數 1073 閱讀 2331

小古銀的官方**(完整教程):

右值引用不適用於返回值

返回值使用左值引用需要注意!!要考慮返回之後的引用是不是還有效!!

先舉個沒問題的完整栗子:

#include // std::cout std::endl

int & return_reference(int &a)

const int & return_reference(const int &a)

int main(void)

輸出結果:

變數a的值:123

呼叫非const的函式

變數a的值:2333

呼叫非const的函式

變數a的值:2333

呼叫非const的函式

變數a的值:7777

帶const的函式

變數te***的值:7777

這個例子應該說明一切了,就不多說了。以下將講解要注意的事項。

當你寫出下面這個樣子時,連編譯器都害怕地給出了警告,這個時候就不能忽略警告了:

int & return_reference(void)

這個函式出現了非常可怕的錯誤。value是乙個區域性變數,當函式結束時,變數value所占有的記憶體就會被釋放,也就是說value不能再儲存資料了,你也不能對value進行操作。而這個函式返回了這個value的引用,無論你是用新的變數儲存函式返回的引用的值還是用乙個引用來儲存這個引用,都會使程式的資料出現混亂甚至崩潰。

返回引用時切記注意變數是否已經不存在。

前面教程中提到的完美**機制,由於用右值引用作為返回型別會破壞完美**機制,而用右值引用儲存返回值沒有什麼用,所以右值引用不適用在函式返回值上。

C 入門教程(四十) 引用

小古銀的官方 完整教程 include std cout std endl int main void 輸出結果 古銀的長度 18 娘炮古的長度 18 改變古銀的長度後 古銀的長度 23333 娘炮古的長度 23333 改變娘炮古的長度後 古銀的長度 66666 娘炮古的長度 66666在資料型別後...

027 C 引用做函式返回值使用

include using namespace std 通過使用引用來替代指標,會使c 程式更容易閱讀和維護。c 函式可以返回乙個引用,方式與返回乙個指標類似。當函式返回乙個引用時,則返回乙個指向返回值的隱式指標。這樣,函式就可以放在賦值語句的左邊。double values templateint...

函式必須有返回值 Go語言入門教程 十 之函式

上次我們講到了關於go語言的流程控制,小棧君也希望小夥伴跟著小棧君一步乙個腳印的敲一下 相互進步。本期我們要分享的go語言系列之函式。一 什麼是函式?函式是指一段在一起的 可以做某一件事兒的程式。也叫做子程式 oop中 方法。乙個較大的程式一般應分為若干個程式塊,每乙個模組用來實現乙個特定的功能。所...