若陣列所有元素皆為指標,稱為指標陣列。定義形式:
資料類型 *陣列名[長度];
[] 優先級高於 *,理解為 資料類型 *(陣列名[長度]):陣列名 是陣列,含 長度 個元素,每個元素類型為 資料類型*。
#include <stdio.h>
int main() {
int a = 16, b = 932, c = 100;
int *arr[3] = {&a, &b, &c};
int **parr = arr; // 指向指標陣列的指標
printf("%d, %d, %d\n", *arr[0], *arr[1], *arr[2]);
printf("%d, %d, %d\n", **(parr+0), **(parr+1), **(parr+2));
return 0;
}
parr 為二級指標,指向 arr 首元素(類型 int*),故定義需兩顆星號。
#include <stdio.h>
int main() {
char *str[3] = {
"c.biancheng.net",
"C語言中文網",
"C Language"
};
printf("%s\n%s\n%s\n", str[0], str[1], str[2]);
return 0;
}
注意: 陣列儲存字串首地址,字串實體位於其他記憶體區域(常數區)。僅當元素類型為 char* 時可直接用字串字面值初始化。
char *str0 = "c.biancheng.net";
char *str1 = "C語言中文網";
char *str2 = "C Language";
char *str[3] = {str0, str1, str2};
指標陣列是構建字串表、命令表、虛函數表等結構的基礎工具。