指標陣列和陣列指標的概念非常容易混淆,今天在這裡整理一下。
先看一下二者的定義:
陣列指標:int (*p)[4]; //p是指向陣列的指標,本身是乙個指標。
指標陣列:int *q[4]; //q是乙個包含4個元素的陣列,每個元素是乙個int型的指標。
接下來通過**感受一下:
#include using namespace std;
int main()
; int(*p)[4]; //p是陣列指標,指向含有4個元素的一維陣列的指標
p = arr; //把二維陣列的首位址賦給p,也可以寫為p = &arr[0][0]
int *q[3]; //q是指標陣列,含有三個int指標
for (int i = 0; i < 3; i++)
q[i] = arr[i]; //把二維陣列每一行的首位址分別賦值給q的每個元素
cout << "輸出陣列指標p:" << endl;
cout << *(*(p + 2) + 2) << endl; //先將p指向arr的第三行,然後輸出第三行第三個元素11
cout << "輸出指標陣列:" << endl;
cout << *(q[1] + 1) << endl; //q[1]即arr第二行的首位址,q[1]+1即指標向前移動一位,指向第二行第二個元素
//也可以用*(*(q+1)+ 1),q[1][1]代替
system("pause");
return 0;
}
執行結果:
輸出陣列指標p:
11輸出指標陣列:
6
指標與陣列,指標陣列 陣列指標
int a 10 print n a p,a p a,a print n a 1 p,a 1 p a 1,a 1 a做乙個指標,步長為4,指向乙個元素,a做乙個指標,步長為40,指向乙個維陣列 int b 3 4 print n b p,b p,b p b,b,b print n b 1 p,b 1...
陣列 指標陣列與陣列指標
一 陣列型別 int a 10 printf a d,a 1 d n a,a 1 printf a d,a 1 d n a,a 1 輸出結果 2 陣列元素的首位址是常量,不能修改,這是為了釋放記憶體空間所必需的,否則找不到釋放記憶體空間的首位址了 3 定義乙個陣列型別 定義陣列型別的格式如下 typ...
指標陣列與陣列指標
1.指標陣列 指標陣列中每乙個元素都是乙個指標,也既是存放字串的首位址。所以指標陣列適合處理若干個長度不等的字串。定義的一般形式為 型別說明符 指標陣列名 陣列長度 例如 int p 3 宣告乙個陣列,指標陣列p,由3個int型別指標變數元素組成 從運算子的優先順序分析,由於 的優先順序大於 所以p...