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

2021-07-15 02:16:45 字數 2269 閱讀 4451

在海大本科課程設計的  繼承實驗中  matrix 類的成員函式  unsignedchar& at(int row, int col); //獲取第row行第col列的矩陣元素的值    

涉及到了返回引用型別的函式返回值:

函式的返回主要分為以下幾種情況:

1、主函式main的返回值:

允許主函式main沒有返回值就可結束;可將主函式main返回的值視為狀態指示器,返回0表示程式執行成功,其他大部分返回值則表示失敗。

2、返回非引用型別:

3、返回引用型別:

1)  海大本科課程設計的  繼承實驗中  matrix 類的成員函式  unsignedchar& at(int row, int col); 就是這種情況:

可以把函式定義為引用型別,這時函式的返回值即為某一變數的引用(別名),因此,它相當於返回了乙個變數,所以可對其返回

值進行賦值操作。這一點類同於函式的返回值為指標型別。 由於函式呼叫返回的引用型別是在函式執行結束後產生的,所以函式不

能返回自動變數和形參。返回的變數的引用,這個變數必須是全域性變數或靜態區域性變數,即儲存在靜態區中的變數。

看個例子:

/*

* main.cpp

* * created on: 2012-9-18

* author: china

* * 注意:由於函式呼叫返回的引用型別是在函式執行結束後產生的,所以函式不能返回自動變數和形參。

返回的變數的引用,這個變數必須是全域性變數或靜態區域性變數,即儲存在靜態區中的變數。

* */

#include using namespace std;

int a = 4;

//函式返回a的引用,即a的別名!!!!

int &f(int x)

int main(int argc, char **argv)

2)當函式返回引用型別時,沒有複製返回值,相反,

返回的是物件本身。

3)千萬

不要返回區域性物件的引用

!千萬不要返回指向區域性物件的指標!

當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時對區域性物件的引用就會指向不確定的記憶體!返回指向區域性物件的指標也是一樣的,當函式結束時,區域性物件被釋放,返回的指標就變成了不再存在的物件的懸垂指標。

4)返回引用時,要求

在函式的引數中,包含有以引用方式或指標方式存在的,需要被返回的引數。

int& abc(int a, int b, int c, int& result)

int& abc(int a, int b, int c)

4、返回const型別

由於返回值直接指向了乙個生命期尚未結束的變數,因此,對於函式返回值(或者稱為函式結果)本身的任何操作,都在實際上,是對那個變數的操作,這就是引入const型別的返回的意義。當使用了const關鍵字後,即意味著函式的返回值不能立即得到修改!如下**,將無法編譯通過,這就是因為返回值立即進行了++操作(相當於對變數z進行了++操作),而這對於該函式而言,是不允許的。如果去掉const,再行編譯,則可以獲得通過,並且列印形成z = 7的結果。 

include include const int& abc(int a, int b, int c, int& result)

int main()

5、例子

下面是乙個段有錯誤的**,找出其中的錯誤。

錯誤**

#include using namespace std;

int val()

int & ref()

int main()

正確**

#include using namespace std;

int j=3;//j是全域性變數

int val()

int & ref()

int main()

{ int vv = val();

int rv = val();//int &rv = val()錯誤!val()返回的是乙個int型的數,而給引用&rv 賦值的必須是乙個同型別的變數。

int vr = ref();

int & rr = ref();

cout<

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

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

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

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

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

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