一個變數有一個地址,一個數組包含若干元素,每個陣列元素都在記憶體中佔用儲存單元,它們都有相應的地址。所謂陣列的指標是指陣列的起始地址,陣列元素的指標是陣列元素的地址。一個數組是由連續的一塊記憶體單元組成的。陣列名就是這塊連續記憶體單元的首地址。一個數組也是由各個陣列元素(下標變數)組成的。每個陣列元素按其型別不同佔有幾個連續的記憶體單元。一個數組元素的首地址也是指它所佔有的幾個記憶體單元的首地址。定義一個指向陣列元素的指標變數的方法,與以前介紹的指標變數相同。例如:
inta[10];/*定義a為包含10個整型資料的陣列*/
int*p;/*定義p為指向整型變數的指標*/
應當注意,因為陣列為int型,所以指標變數也應為指向int型的指標變數。下面是對指標變數賦值:
p=&a[0];
把a[0]元素的地址賦給指標變數p。也就是說,p指向a陣列的第0號元素。C語言規定,陣列名代表陣列的首地址,也就是第0號元素的地址。因此,下面兩個語句等價:
p=&a[0];
p=a;
在定義指標變數時可以賦給初值:
int*p=&a[0];
它等效於:
int*p;
p=&a[0];
當然定義時也可以寫成:
int*p=a;
從圖中我們可以看出有以下關係:p、a、&a[0]均指向同一單元,它們是陣列a的首地址,也是0 號元素a[0]的首地址。應該說明的是p是變數,而a、&a[0]都是常量。在程式設計時應予以注意。陣列指標變數說明的一般形式為: 型別說明符 *指標變數名;其中型別說明符表示所指陣列的型別。從一般形式可以看出指向陣列的指標變數和指向普通變數的指標變數的說明是相同的。