函式的返回過程和引數傳遞過程是相對稱的兩個的過程。
引數傳遞從呼叫函式向被呼叫函式傳遞, 返回值從被呼叫函式向呼叫函式返回。
有與傳遞方式的區別(拷貝副本與傳遞本身), 函式形參可以分為引用形參和非引用形參; 類似的,函式返回值也可以分為非引用型別返回值和引用型別返回值, 二者的差異和引用形參和非引用形參型別。
當函式返回非引用型別是,返回值的拷貝副本用來初始化在函式呼叫處建立的臨時物件;
當函式返回引用型別時,返回的是物件本身;
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 返回引用型別 當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時對區域性物件的...