1. 程式人生 > >More reading and learning to become excellent

More reading and learning to become excellent

在C語言中,使用Point(指標)可以間接獲取,修改某個變數的值 在C++中,使用引用(Reference),可以起到跟指標類似的功能. 注意點:

  1. 引用相等於是變數的別名(基本資料型別,列舉,結構體,類,指標,陣列等,都可以有引用)
  2. 對引用的計算,就是對引用所指向的變數做計算
  3. 在定義的時候就必須初始化,一旦指向了某個變數,就不可以再改吧,從一而終
  4. 不存在引用的引用,指向引用的指標也是不存在的.引用陣列也是不存在的即int &Array[4]不存在.

對基本資料型別的引用 int main () { int age = 20; // 定義一個引用,相等於是變數的別名 // rAge相等於是age的別名 int &rAge = age; // 對引用做計算就是對引用所指向的變數做計算 rAge = 40;

// 從一而終 解釋下: int width = 20; // 一旦指向就不可以再改變 int &rWidth = width; int height = 50; // 這裡意思不是讓rWidth指向height,因為在初始化的時候rWidth就確定了值為width,就代表以後永遠是width,這句話的意思是將height賦值給width,這句話的意思是將50這個值取出來賦值給width,所以下面這個操作是修改了width的值,width變成了50 rWidth = height; // 指標是可以改指向的,但是引用一旦賦值就不會改變指向,所以指標和引用還是有區別的

} 那麼此時age的值變為了40; 對列舉的引用

enum Season { Spring, Summer, Fall, Winter }; int main() { Season season; // rSeason相等於season的一個別名 Season &rSeason = season; // 給引用賦值就相等於給season賦值 rSeason = Winter; 那麼此時的season的值為3; } 對結構體的引用 struct Student { int age; };

int main() { Student stu; Student &rStu = stu; // 相等於給stu的age賦值為20,rStu是對stu的引用,即別名 rStu.age = 10;

}

對指標的引用 int a = 10; int b = 20; // 相等於p指標指向變數a int *p = &a; // 那麼指標變數p也是可以有引用的,rP是對指標p的引用,rP為p的一個別名 int *&rP = p; // 將b的地址,賦值給了指標p. rP = &b; *p = 30;// 此時b的值為30.

因為 int age = 10; //建立變數age的一個引用rAge是在變數型別int的右邊加上一個&就可以了. int &rAge = age; 同理指標p的型別是int *,所以對指標p的引用是在型別int *的右邊加一個&,就是rP對指標p的引用.

對陣列的引用 int array[] = {10,20,30}; // 引用這一個陣列的引用 int (&rArray)[3] = array;

int *a[4]; // 陣列中的每一個元素都是指標型別,叫做指標陣列 int (*b)[4]; // 指向整型陣列的指標.

** 引用和指標都可以交換值** // 引用交換值 void swap(int &a, int &b){ int temp = a; a = b; b = temp; }

int main(){ int v1 = 10; int v2 = 20; swap(v1,v2); } // 指標交換值 void swap(int *a,int *b){ int temp = *a; *a = *b; *b = temp; }

int main() { int v1 = 10; int v2 = 20; swap(&v1,&v2); }