#include<stdio.h> int main() { int a[3][4]={11,12,13,14,15,16,17,18,19,110,111,112}; int s[5]={111,222,333,444,555}; printf("sizeof(a):%d\n",sizeof(a)); printf("sizeof(a[0]):%d\n",sizeof(a[0])); printf("sizeof(a[0][0]):%d\n",sizeof(a[0][0])); printf("a=%p\n",a); printf("a+1=%p\n",a+1); printf("*a+1=%p\n",*a+1); printf("*a=%p\n",*a); printf("*(a+1)=%p\n",*(a+1)); printf("*(a+1)+1=%p\n",*(a+1)+1); printf("\n\n"); int *ptr1=(&a+1); printf("%d\n",*(ptr1-1));//112 int *ptr2=(&a[1]+1); printf("%d\n",*(ptr2-1));//18 printf("%d\n",*a[1]);//15 a[1]是指向第二行的首地址 printf("%d\n",*(a+1));//=a[1] 输出的为15的地址 printf("%d\n",**(a+1));//15 printf("\n"); // printf("%d\n",*s[1]);//报错 printf("%d\n",*(s+1));//222 return 0; }
运行结果:
sizeof(a):48
sizeof(a[0]):16
sizeof(a[0][0]):4
a=0xbfc8e8f4
a+1=0xbfc8e904
*a+1=0xbfc8e8f8
*a=0xbfc8e8f4
*(a+1)=0xbfc8e904
*(a+1)+1=0xbfc8e908
112
18
15
-1077352188
15
222