二維陣列指標的使用
阿新 • • 發佈:2019-02-04
# include <stdio.h> int main(void) { int a[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}}; printf("%0x\n", a); printf("%0x\n", a+1); printf("%0x\n", a+2); printf("\n"); printf("%0x\n", *a); printf("%0x\n", *(a+1)); printf("%0x\n", *(a+2)); printf("\n"); printf("%0x\n", a[0]); printf("%0x\n", a[1]); printf("%0x\n", a[2]); printf("\n"); printf("%0x\n", &a[0]); printf("%0x\n", &a[1]); printf("%0x\n", &a[2]); printf("\n"); printf("%0x\n", &a[0][0]); printf("%0x\n", &a[1][0]); printf("%0x\n", &a[2][0]); printf("\n"); printf("%0x\n", *a+1); printf("%0x\n", *a+2); printf("%0x\n", *a+3); printf("\n"); printf("%0x\n", *(a+1)+1); printf("%0x\n", *(a+1)+2); printf("%0x\n", *(a+1)+3); printf("\n"); printf("%0x\n", *(a+2)+1); printf("%0x\n", *(a+2)+2); printf("%0x\n", *(a+2)+3); printf("\n"); printf("%0x\n", a[0]+1); printf("%0x\n", a[0]+2); printf("%0x\n", a[0]+3); printf("\n"); printf("%0x\n", a[1]+1); printf("%0x\n", a[1]+2); printf("%0x\n", a[1]+3); printf("\n"); printf("%0x\n", a[2]+1); printf("%0x\n", a[2]+2); printf("%0x\n", a[2]+3); printf("\n"); printf("%0x\n", &a[0][1]); printf("%0x\n", &a[0][2]); printf("%0x\n", &a[0][3]); printf("\n"); return 0; } /* * a,a+1,a+2 a[0],a[1],a[2] *a,*(a+1),*(a+2) * &a[0],&a[1],&a[2] &a[0][0],&a[1][0],&a[2][0] * 表示的都是每一行元素的首地址 * *a+1,*a+2,*a+3 *(a+1)+1,*(a+1)+2,*(a+1)+3 *(a+2)+1,*(a+2)+2,*(a+2)+3 * a[0]+1,a[0]+2, a[0]+3 a[1]+1,a[1]+2,a[1]+3 a[2]+1,a[2]+2,a[2]+3 * 表示的是首元素之後的幾個元素的地址 * * */
執行結果: