#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