引用就是給乙個變數起別名,定義好之後,對引用和變數操作效果一樣。
資料型別 &別名 = 原名
舉個例子
int
main()
`
不存在空引用。引用必須連線到一塊合法的記憶體。
一旦引用被初始化為乙個物件,就不能被指向到另乙個物件。(指標可以在任何時候指向到另乙個物件。)
引用必須在建立時被初始化。(指標可以在任何時間被初始化。)
在實際程式中,我們不僅僅是用引用給某個變數起個別名,主要還是在函式引數傳遞過程中,可以利用引用的技術讓形參修飾實參
可以簡化指標修改實參
作用:函式傳參時,可以利用引用的技術讓形參修飾實參
優點:可以簡化指標修改實參
函式引數傳遞有兩種情況值傳遞和位址傳遞。在值傳遞的時候形參的改變無法對實參產生影響,但是位址傳遞的時候形參的改變會對實參產生影響。
引用傳遞:
在引用傳遞的過程中,被調函式的形參作為區域性變數在堆疊中開闢了記憶體空間,這時存放的是由主函式放進來的實際引數變數的位址,被調函式對形參的任何操作都被處理成間接定址,即通過堆疊中存放的位址訪問主函式中的實參,正因為如此被調函式對形參的任何操作都會影響主函式中的實參。即引用傳遞的時候形參的改變會對實參產生影響。
總結:1、引用傳遞,在函式定義時候,在形參前面加上引用運算子 「&」 ,在函式被呼叫的時候,引數傳遞的內容不是實參的值,而是實參的位址,即將實參的位址存放到編譯器為形參分配的記憶體空間上,因此對形參的任何操作都會改變相應實參的值。
2、位址傳遞,在被調函式中同樣要給形參分配儲存單元,且需要重複使用"*指標變數名"的 形式進行運算,這很容易產生錯誤且程式的閱讀性較差;另一方面,在主調函式的呼叫點處,必須用變數的位址作為實參。而引用更容易使用,更清晰。
下面通過實際案例比較三種形式的不同
//1. 值傳遞
void
myswap01
(int a,
int b)
//2. 位址傳遞
void
myswap02
(int
* a,
int* b)
//3. 引用傳遞
void
myswap03
(int
& a,
int& b)
intmain()
作用:引用是可以作為函式的返回值存在的
用法:函式返回值型別 &函式名()
注意:1、不要返回區域性變數引用,因為區域性變數在函式結束後就被銷毀了,此時的函式不知所措。
2、使用時,函式前要加上 &符號。
用法:函式呼叫作為左值
舉個例子示例:
myswap03
(a, b)
; cout <<
"a:"
<< a <<
" b:"
<< b << endl;
system
("pause");
return0;
}//返回區域性變數引用
int&
test01()
//返回靜態變數引用
int&
test02()
intmain()
intmain()
注意:什麼時候需要使用「常量引用」?
如果既要利用引用提高程式的效率,又要保護傳遞給函式的資料不在函式中被改變,就應使用常量引用。
7、介紹引用的本質
之前介紹了引用的一些知識,接著說下引用的本質是什麼。
本質:引用的本質在c++內部實現是乙個指標常量.
(指標常量:指標指向是不可以修改的,指標指向的值是可以改動的)
結論:c++推薦用引用技術,因為語法方便,引用本質是指標常量,但是所有的指標操作編譯器都幫我們做了
例項:
//發現是引用,轉換為 int* const ref = &a;
void
func
(int
& ref)
intmain()
{int a =10;
//自動轉換為 int* const ref = &a; 指標常量是指標指向不可改,也說明為什麼引用不可更改
int& ref = a;
ref =20;
//內部發現ref是引用,自動幫我們轉換為: *ref = 20;
// 注意:我們在實際使用的過程中,不要考慮太多,直接預設 ref = a 即可。
cout <<
"a:"
<< a << endl;
cout <<
"ref:"
<< ref << endl;
func
(a);
return
0
未完待續~~~~~~~~~~ C 中引用的基礎知識
include using namespace std 1 引用的基本概念 int main01 2 引用是c 的語法範疇,是屬於c 編譯器對c的擴充套件 c編譯器不能通過引用這個概念 3 引用做函式引數 普通引用在宣告的時候必須用其它的變數進行初始化 引用作為函式引數宣告時不進行初始化 int m...
引用相關知識總結
1.什麼是 引用 申明和使用 引用 要注意哪些問題?答 引用就是某個目標變數的 別名 alias 對應用的操作與對變數直接操作效果完全相同。申明乙個引用的時候,切記要對其進行初始化。引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,不能再把該引用名作為其他變數名的別名。宣告乙個引用...
c 中的友元的相關知識
c 中建立類的時候會有公共許可權 保護許可權 私有許可權。往往是訪問不到乙個類中私有許可權中內容的。在程式中,有些私有屬性 也想讓類外特殊的一些函式或者類進行訪問,就需要用到友元的技術,這樣一來兩個類就可以共享資料。節省記憶體空間。如果友元是一般成員函式或者類的成員函式,則稱為友元函式,如果友元是乙...