指標陣列,陣列指標,陣列引用
阿新 • • 發佈:2018-11-21
好久不用C++,今天遇到陣列指標又迷糊了,感覺複習一波並記錄下來
陣列引用
定義一個4x3的陣列:
int arr[4][3] = { 0,11,22,33,44,55,66,77,88,1,2,3 };
定義對陣列的引用:ref是一個大小為3的陣列,是對a[0]的引用;
int(&ref)[3] = arr[0];
若想對整個arr引用,在定義引用時則建立二維陣列:
int(&ref)[4][3] = arr;
指標陣列&陣列指標
指標陣列
指標陣列比較簡單,定義方式為
int arr[4][3] = { 0,11,22,33,44,55,66,77,88,1,2,3 }; int* p1[4];
從右往左看,首先他是一個大小為4的陣列,再往前看他存放的是int型別的指標,這樣就比較好理解
for (int i=0;i<4;i++)
{
p1[i] = arr[i]+1;
cout << *p1[i]<< endl;
}
將arr陣列的每一行的第2個元素的地址賦值到p1,然後輸出
陣列指標
陣列指標的定義和函式指標的定義相似
int(*p2)[3];
從內往外看,先看括號裡他是一個指標,觀察右邊發現他是指向一個大小為10的陣列,往左看,陣列中的元素為int,p2就是指向一個大小為3的int型陣列的指標。
賦值時把陣列的地址傳給指標:
p2 = &arr[0];
這裡arr[0]和&arr[0]的值是一樣的,但是需要傳的是&arr[0],arr[0]是陣列第一個元素的地址,而&arr[0]是第一個陣列的地址。
*p2得到的是陣列的首地址,之後可以按照陣列的訪問方式讀取陣列元素。
還可以通過p2訪問到陣列的其他元素
讓p2指向二維陣列的第2個數組
p2 = &arr[1];
p2[-1]指向第一個陣列,p2[1]指向第三個陣列,p2[2]指向第四個陣列。其實利用的還是陣列的連續性。