主流移動web站點的特點及佈局
阿新 • • 發佈:2021-01-24
技術標籤:C++
int &r= a;
1、引用
r是a的引用
- 引用是原來變數的別名
- 引用必須初始化,初始化之後就不會改變了——因為引用的本質是指標常量,編譯器自動將引用語句轉換為指標常量,如int &ref = a;將自動變換為int * const ref = &a;之後碰到的ref都會自動變換為指標常量,如ref = 20;會程式設計*ref = 20;
- C++推薦引用操作,本質是指標常量,所有的指標操作又編譯器操作。
2、引用作為函式返回值
- 不能返回區域性變數的引用
- 可以作為左值
3、指標和引用的區別
1.指標和引用的定義和性質區別:
(1)指標:指標是一個變數,只不過這個變數儲存的是一個地址,指向記憶體的一個儲存單元;而引用跟原來的變數實質上是同一個東西,只不過是原變數的一個別名而已。如:
int a=1;int *p=&a;
int a=1;int &b=a;
上面定義了一個整形變數和一個指標變數p,該指標變數指向a的儲存單元,即p的值是a儲存單元的地址。
而下面2句定義了一個整形變數a和這個整形a的引用b,事實上a和b是同一個東西,在記憶體佔有同一個儲存單元。
(2)可以有const指標,但是沒有const引用;
(3)指標可以有多級,但是引用只能是一級(int **p;合法 而 int &&a是不合法的)
(4)指標的值可以為空,但是引用的值不能為NULL,並且引用在定義的時候必須初始化;
(5)指標的值在初始化後可以改變,即指向其它的儲存單元,而引用在進行初始化後就不會再改變了。
(6)"sizeof引用"得到的是所指向的變數(物件)的大小,而"sizeof指標"得到的是指標本身的大小;
(7)指標和引用的自增(++)運算意義不一樣;
4、指標和引用作為函式引數
1、指標作為函式引數,傳遞的是變數的地址,仍然是值傳遞,但是可以修改實參 void func(int * p)
2、引用作為函式引數,傳遞的是變數本身,傳遞的是實參,是引用傳遞,可以修改實參
#include <iostream> using namespace std; void refunc(int& b) { b = 10; } int main() { int a = 0; refunc(a); cout << a << endl; }
在呼叫的時候時候直接傳遞實參就可以了,在func函式中,b作為a的引用,因此在func中對b做修改,main函式中的a也會對應的被修改。輸出結果為:
3、使用引用可以簡化指標操作