int (*p)[4]; // 指向包含 4 個 int 的數組的指針
// 括號不可省:int *p[4] 是指針數組!
p = a; — 指向二維數組 ap + i — 指向第 i 行*(*(p+i)+j) — 第 i 行第 j 列元素值static int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
int (*p)[4] = a;
for (int i=0; i<3; i++)
for (int j=0; j<4; j++)
printf("%2d ", *(*(p+i)+j));
char *ps = "C Language";
printf("%s", ps); // 輸出整串
ps += 10; // 指向第 11 字符
printf("%s", ps); // 輸出 "book" (from "this is a book")
char st[20], *ps = st;
scanf("%s", ps); // 等價 scanf("%s", st)
for (int i=0; ps[i]!='\0'; i++)
if (ps[i]=='k') { found; break; }
char *PF = "%d,%d,%d,%d,%d\n";
printf(PF, a, *a, a[0], &a[0], &a[0][0]);
// 輸出各種地址表示驗證等價性
void cpystr(char *pss, char *pds) {
while ((*pds++ = *pss++) != '\0');
}
main() {
char *pa = "CHINA", b[10], *pb = b;
cpystr(pa, pb);
printf("string a=%s\nstring b=%s\n", pa, pb);
}
void cpystr(char *pss, char *pds) {
while (*pds++ = *pss++);
}
printf("%d,%d\n", a[1]+1, *(a+1)+1); // 地址值相同
printf("%d,%d\n", *(a[1]+1), *(*(a+1)+1)); // 元素值相同
指針作函數參數實現「傳址調用」,是 C 語言模擬引用傳遞、操作調用者內存、處理動態數據結構的基石。