函式中引數的傳遞方式:
傳值:在函式域中為引數重新分配記憶體,而把實參的數值傳遞到新分配的記憶體中。
優點:不會改變實參的值;
引用:引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名,也就是c++系統不為引用型別變數 分配記憶體空間。引用主要用於函式之間的資料傳遞。
優點:如果實參是乙個複雜的物件,重新分配記憶體會引起程式執行效率大大下降,而引用只傳遞位址,不會分配記憶體。
注意:
1.對陣列只能引用陣列元素,不能引用陣列(陣列名本身為位址)。
2.不能定義引用的引用(引用也是位址),所以當函式的引數為引用時,引用不能作實參。
當引用作為形參時,實參也不能使用不可定址的值,更不可能進行型別轉換(如:實數轉換為整數)。
但是const引用不同,它是唯讀的,為了絕對保證不會發生誤改,編譯器實現const引用時,生成乙個臨時物件,
引用實際上指向該臨時物件,但使用者不能訪問它。所以const引用可以實現不可定址的值(包括字面常量)的引用,
例如:const double dval=1024; const int &ri=dval;
是正確的,編譯器將其轉換為:
const double dval=1024; int temp=dval; const int &ri=temp;
因有臨時物件,引用和型別轉換都實現了。當const引用作為形參時,實參也能使用不可定址的值,並能進行型別轉換
注意:只能對已有空間進行引用;
int a = 10;
int &b = a; //對變數引用
int *p = &a;
int *&q = p; //對指標引用
int ar[10] = ;
int (&br)[10] = ar; //對陣列引用
const int x = 100;
const int &y = x; //常量只能用常引用
int n = 20;
const int &m = n; //用m不能改變n
const double d = 12.34;
const int &f = d; //引用了中間的臨時變數
注意:中間變數一般具有常量的性質,不可改變;
C 基礎 引用
什麼是引用 引用的概念及用法 引用做引數 引用做返回值 引用和指標的區別 引用其實就是給物件 起別名 定義了乙個原有物件的同義詞,對引用進行的操作和對被引用所繫結的物件做的操作等價 用法 型別 變數名 變數名 如 int a 0 int b a 引用的型別必須與被引用的型別相同 宣告引用的同時必須對...
C 引用基礎
引用 includeusing namespace std struct student struct teacher int getnum student s2 void main 引用賦值 b 13 printf a d n a 結構體引用 student s1 s1.age 12 定義s1的引...
c 基礎 引用 const
一些c 對於c語言的加強 1 int fun 在c語言中表示返回值int型的函式,括號裡的引數是任意的 但是在c 中也表示int 型返回值的函式,但是括號裡是沒有引數的相當於int fun void 也就是說在c 中他強調的是型別,所有程式的所有元素都必須指明型別 2 c 中的表示式的返回值是變數本...