陣列指標:a pointer to an array ,指向陣列的指標
指標陣列:array of pointer ,用於儲存指標的陣列,即陣列元素都是指標
int (*p)[6] 陣列指標 :表示指向陣列a的指標 元素表示:(*a)[i] (指向一維陣列的指標,也成行指標)
int* p[6] 指標陣列 :表示陣列a中的元素都是int *型,即int型指標 元素表示:*(a[i]) 或者*a[i] (優先順序高於*)
**:#include
using namespace std;
int main()
;int* b[4]; //指標陣列
int(*c)[4]; //陣列指標
c = &a; //讓c指向a的首位址
for (int i = 0; i<4; i++)
cout << *b[1] << endl; //b[1]=&a[1],即b[1]中為位址(該位址中存入的是資料2) , *b[1]即取&a[1]中的元素內容,即2
cout << (*c)[2] << endl;//可將(*c)看成陣列名,相當於a,(*c)[2]=a[2],即為3
return 0;
}執行結果:23
技巧:可以將陣列指標的(*c)看成乙個陣列名使用
陣列指標
int (*p)[6] ()優先順序高,說明p是乙個指標,指向乙個int型的一維陣列,這個陣列的長度是n,也就是p的步長為n,執行p+1(p要跨過n個整型資料的長度)
int a[3][4];
int (*p)[4]; //定義乙個陣列指標,指向含4個元素的以為陣列
p=a; //將二維陣列a的首位址賦給p,即a[0]或&a[0][0]
p++; //該語句執行後,即p=p+1,p跨過行a[0]指向了行a[1]
#include
using namespace std;
int main()
,,};
int(*p)[4];
p = a;
cout << (*p)[0] << endl;
p++;
cout << (*p)[0] << endl;
cout << *((*p)+1)<< endl; //*((*p)+1)相當於(*p)[1] ,*p此時為乙個位址
}執行結果:15
6指標陣列int* p[n]
優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列,它由n個指標lexington的元素組成(這裡執行p+1是錯誤的,這樣賦值也是錯誤的:p=a,p是個不可預知的表示,只存在p[0],p[1]….p[n-1],它們分別是指標變數可以用來存放變數位址),可以這樣*p=a;這裡*p表示指標陣列第乙個元素的值,a的首位址的值
int *p[3]; //表示乙個一維陣列內存放著三個指標變數,分別是p[0],p[1],p[2]
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
ps:陣列指標只是乙個指標變數,它占有記憶體中乙個指標的儲存空間,指標陣列是多個指標變數,以陣列形式存在記憶體中,占有多個指標的儲存空間
指標陣列要表示陣列中第i行第j列的元素:
*(p[i]+j) *(*(p+i)+j) (*(p+i))[j] p[i][j]
陣列指標和指標陣列的區別
陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...
陣列指標和指標陣列的區別
陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...
陣列指標和指標陣列的區別
陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...