陣列指標與指標陣列

2021-08-02 12:54:07 字數 911 閱讀 5234

指標陣列和陣列指標的概念非常容易混淆,今天在這裡整理一下。

先看一下二者的定義:

陣列指標: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...