C語言基礎 指標陣列與陣列指標

2021-08-18 22:52:27 字數 1697 閱讀 1889

一、指標陣列

在這一節中我們來學習乙個陣列,這個陣列比較特殊,也比較普通。說它特殊是因為這個陣列是指標的陣列,也就是說我們有乙個陣列,這個陣列裡存放的變數型別是指標型變數;說它普通是因為陣列變數其實與其它普通變數沒有什麼區別,指標變數就是一種可以存放記憶體位址的變數,所以它們也可以被定義成一串連續的變數集合,這個集合就是指標陣列。例如,我們可以定義一組變數,這組變數就是乙個陣列,共有4個元素,而每乙個元素都是乙個指向int型變數的指標:

int a = 0;

int b = 1;

int c = 2;

int d = 3;

int *p[4];

p[0] = &a;

p[1] = &b;

p[2] = &c;

p[3] = &d;

printf("%d\n", *p[0]);

printf("%d\n", *p[1]);

printf("%d\n", *p[2]);

printf("%d\n", *p[3]);

在這裡我們要注意一下運算子的優先順序,由於 * 的優先順序比 的優先順序低,所以整個表示式中p要先與[4]做結合表示的是乙個陣列,再與 * 結合表示每乙個陣列元素的型別是乙個指標變數。我們再來看一看多維陣列與多維指標陣列:

int array[2][3] =,};

int *p[2][3];

for (int i = 0; i < 2; i++)

}for (int

i = 0;

i< 2; i++)

printf("\n");

}

值得注意的地上是多維陣列表示的是整型多維陣列表示的是很陣列中每乙個元素的型別都 是型型的變數,而多維指標陣列中表示的是陣列中每乙個元素的型別都是指標型變數。而在迴圈賦值時我們將陣列指標陣列中的每乙個指標都指向了整型陣列中的每乙個元素。

二、指標陣列與陣列指標

接下來我們來看一看乙個非常容易混淆的兩個概念:「指標陣列」與「陣列指標」。

指標陣列:表示的是乙個陣列,陣列中每乙個變數都是指標型變數;

陣列指標:表示的是乙個指標型別的變數,這個指標變數指向的是乙個陣列。

我們用乙個例子來仔細對它們的區別做說明:

int array[2][3] =,	 

};//指標陣列

int *p[2][3];

for (int i = 0; i < 2; i++)

}for (int i = 0; i < 2; i++)

printf("\n");

}//陣列指標

int (*q)[3] = array;

for (int i = 0; i < 2; i++)

printf("\n");

}

對於上面程式中兩種不同的指標陣列和陣列指標請大家一定要分清。int *p[2][3];所表示的是乙個二維陣列,陣列的每乙個元素都是乙個指標變數。也就是說,這是乙個具有6個指標型變數的陣列;而int (*q)[3] = array;所表示的是陣列指標,注意:這裡只定義了乙個指標型變數q,它指向乙個二維陣列array。而對於q來說,它告訴編譯器,這是乙個指標,這個指標指向乙個具有3列的陣列變數。

關於這兩個概念不太容易理解,請大家自己動手編寫相關的程式,通過編寫程式、檢視其執行結果來慢慢消化這兩個概念,並熟練掌握它們的原理與用法。

C語言指標陣列與陣列指標

初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...

C與C 基礎 陣列指標與指標陣列

c與c 基礎 陣列指標與指標陣列 c與c 基礎 結構體struct和typedef struct 區別 c與c 基礎 函式 c與c 基礎 記憶體管理 陣列指標也成為行指標,陣列指標,就是乙個指標,指向乙個一維陣列。定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一...

c語言基礎必備 指標陣列 and 陣列指標

對於指標陣列和陣列指標,單從字面上似乎很難分清它們是什麼,先來看看指標陣列和陣列指標各自的定義形式。指標陣列的定義形式為 是乙個陣列 型別名 陣列名 陣列長度 如 int p 8 陣列指標的定義形式為 是乙個指標 型別名 指標名 陣列長度 如 int p 8 現在來分析上述兩種定義形式,通過 int...