類型 *數組名[長度],如 char *ptr1[4] 含 4 個 char*,int *ptr2[5] 含 5 個 int*。優先級 [] 高於 *,故先成數組再成指針。
char *ptr1[4] = {"china","chengdu","sichuan","chongqing"}; 每指針指向一字符串常量區,printf("%s", ptr1[i]) 輸出。int a[3]={1,2,3}; for(i) ptr2[i]=&a[i]; 印 *ptr2[i] 得 1 2 3。int b[3][2]={1,2,3,4,5,6}; for(i) ptr2[i]=b[i]; ptr2[i] 指向第 i 行首元素,*ptr2[i] 与 *(ptr2[i]+1) 為該行兩列值。ptr2[i]+1 即同行下一列。#include
#include
main() {
char *ptr1[4] = {"china","chengdu","sichuan","chongqing"};
int i, *ptr2[3], a[3]={1,2,3}, b[3][2]={1,2,3,4,5,6};
for(i=0;i<4;i++) printf("\n%s", ptr1[i]);
for(i=0;i<3;i++) ptr2[i]=&a[i];
for(i=0;i<3;i++) printf("%4d", *ptr2[i]);
for(i=0;i<3;i++) ptr2[i]=b[i];
for(i=0;i<3;i++) printf("%4d%4d\n", *ptr2[i], *(ptr2[i]+1));
}