引用變量是一個別名,也就是說,它是某個已存在變量的另外一個名字。一旦把引用初始化爲某個變量,就可使用該引用名稱或變量名稱來指向變量。ios
引用引入了對象的一個同義詞。定義引用的表示方法與定義指針類似,只是用&代替了*。引用(reference)是c++對c語言的重要擴充。引用就是某c++
一變量(目標)的一個別名,對引用的操做與對變量直接操做徹底同樣。其格式爲:類型 &引用變量名 = 已定義過的變量名。函數
引用的特色:spa
①一個變量可取多個別名。指針
②引用必須初始化,只有別名是不能成立的。code
③引用只能在初始化的時候引用一次 ,不能更改成轉而引用其餘變量。對象
引用很容易與指針混淆,它們之間有三個主要的不一樣: blog
#include <iostream> #include <stdio.h> using namespace std; int main(void) { int a=10; int &b=a; // 給a起一個別名b b=20; // 對b操做和對a操做效果是同樣的 cout << a <<endl; a=30; cout << b << endl; system("pause"); return 0; }
運行結果:20 30內存
#include <iostream> #include <stdio.h> using namespace std; typedef struct // 定義一個結構體 { int x; int y; }Coord; // 結構體的名字 int main(void) { Coord c; Coord &c1 = c; // 給c起一個別名c1 c1.x = 10; // 對c1操做至關於對c操做 c1.y = 20; cout << c.x << "," << c.y << endl; system("pause"); return 0; }
運行結果:it
格式:類型 *&指針引用名 = 指針簡而言之:給地址起一個別名
#include <iostream> #include <stdio.h> using namespace std; int main(void) { int a = 3; int *p = &a; int *&q = p; cout << p << endl; // P = 0093FC60 cout << &q << endl; // &q = 0093FC54 cout << *&q << endl;//*&q = 0093FC60 *q = 5; cout << a << endl; system("pause"); return 0; }
運行結果:
之前咱們在C語言中交換a,b的位置時:
void fun(int *a,int *b) { int c; c = *a; *a = *b; *b = c; }
調用的時候咱們須要吧參數的地址傳進去:
int x =10,y = 20; fun(&x,&y);
而當咱們引入了引用,事情就方便多了
void fun(int &a,int &b) // 形參就是引用別名 { int c = 0; c = a; a = b; // a和b都是以別名形式進行交換 b = c; }
調用傳參
int x =10,y = 20; fun(x,y);
#include <iostream> #include <stdio.h> using namespace std; void fun(int &a,int &b) int main(void) { int x =10; int y =20; cout << x << "," << y << endl; fun(x,y); cout << x << "," << y << endl; system("pause"); return 0; } void fun(int &a,int &b) { int c = 0; c = a; a = b; b = c; }
輸出結果: