1、定義app
引用變量是已定義變量的別名,如將ra設置爲a的引用變量,則能夠使用ra和a交替使用該變量。函數
表示:spa
int a = 5;指針
int & ra = a;變量
其中&不是地址運算符,而是類型標示符的一部分。 引用
2、含義程序
使用引用變量ra和變量a都指向同一個地址,均可以改變變量的值。數據
3、引用變量和指針的區別poi
int a = 100;co
int & ra = a; //ra a reference
int * pa = &a; //pa a pointer
一、表示法不一樣:
表達式ra和*pa均可以和a交換,而表達式&ra和pa均可以和&a交換。
二、初始化不一樣:
引用變量必須在聲明時初始化
int a;
int & ra = a;
指針能夠先聲明,再初始化
int a;
int * pa;
pa = &a;
4、應用
一、能夠經過初始化設置引用,不能夠經過賦值設置:
int A = 2;
int & a = A;
cout << "A = " << A << ",a = " << a << endl;
cout << "A adress = " << &A << ",a address = " << &a << endl;
int b = 3;
a = b;
cout << "A = " << A << ",a = " << a << ",b = " << b << endl;
cout << "A adress = " << &A << ",a address = " << &a << ",b address = " << &b << endl;
——————程序運行結果——————
A = 2,a = 2
A adress = 0x22fef8,a address = 0x22fef8
A = 3,a = 3,b = 3
A adress = 0x22fef8,a address = 0x22fef8,b address = 0x22fef4
由上可知,a = b,等同於A = b;結果是a和A的值都變成了3,可是兩個變量的地址沒變,說明不能夠經過賦值設置引用變量,一旦初始化設置了就不能夠改變。
二、將引用用做函數參數:
void swapv(int m, int n){
int temp;
temp = m;
m = n;
n = temp;
}
void swapp(int * m, int * n){
int temp;
temp = *m;
*m = *n;
*n = temp;
}
void swapr(int & m, int & n){
int temp;
temp = m;
m = n;
n = temp;
}
int a = 2;
int b = 6;
swapv(a, b);
cout << "use value " << "a = " << a << ", b = " << b << endl;
swapp(&a, &b);
cout << "use pointer " << "a = " << a << ", b = " << b << endl;
swapr(a, b);
cout << "use reference chang again " << "a = " << a << ", b = " << b << endl;
——————程序運行結果——————
use value a = 2, b = 6
use pointer a = 6, b = 2
use reference chang again a = 2, b = 6
由上可知,只有指針和引用變量能夠交換數據,賦值方式不可。