C 函式返回非引用型別與返回引用型別

2021-07-05 11:14:05 字數 566 閱讀 6155

函式的返回過程和引數傳遞過程是相對稱的兩個的過程。

引數傳遞從呼叫函式向被呼叫函式傳遞, 返回值從被呼叫函式向呼叫函式返回。

有與傳遞方式的區別(拷貝副本與傳遞本身), 函式形參可以分為引用形參和非引用形參; 類似的,函式返回值也可以分為非引用型別返回值和引用型別返回值, 二者的差異和引用形參和非引用形參型別。

當函式返回非引用型別是,返回值的拷貝副本用來初始化在函式呼叫處建立的臨時物件;

當函式返回引用型別時,返回的是物件本身;

eg.int & ****(int & a)

return a;

返回引用型別可以避免拷貝副本的開銷,同時返回引用的函式返回的是個左值,可以用在任何可以使用左值的地方:

eg :

int b =0;

****(b) = 1;

如果不希望引用返回值被修改,可以宣告為const;

const int & ****(int &a);

但有其限制:  不能返回區域性物件的引用,因為函式執行完畢時,區域性物件會自動釋放, 此時區域性物件的引用會指向不確定的記憶體;

類似的,也不能返回區域性物件的指標;

C 函式的返回值 返回引用型別 非引用型別

函式的返回主要分為以下幾種情況 1 主函式main的返回值 允許主函式main沒有返回值就可結束 可將主函式main返回的值視為狀態指示器,返回0表示程式執行成功,其他大部分返回值則表示失敗。2 返回非引用型別 3 返回引用型別 當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時對區域性物件的...

C 函式的返回值 返回引用型別 非引用型別

在海大本科課程設計的 繼承實驗中 matrix 類的成員函式 unsignedchar at int row,int col 獲取第row行第col列的矩陣元素的值 涉及到了返回引用型別的函式返回值 函式的返回主要分為以下幾種情況 1 主函式main的返回值 允許主函式main沒有返回值就可結束 可...

C 函式的返回值 返回引用型別 非引用型別

函式的返回主要分為以下幾種情況 1 主函式main的返回值 允許主函式main沒有返回值就可結束 可將主函式main返回的值視為狀態指示器,返回0表示程式執行成功,其他大部分返回值則表示失敗。2 返回非引用型別 3 返回引用型別 當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時對區域性物件的...