#include
#include
/*=============================================================*/
int main()
{
int b[]={1,2,3,4};
printf("b=%d,*b=%d\n",b,*b);//&,1
printf("-------------------------------------------\n");
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int n=sizeof(a[0][0]);
printf("数组a一共有12个元素,包括3行4列,每行4个元素,每列3个元素\n");
printf("a=%d,*a=%d\n",a,*a);//&,&
printf("a size=%d,*a size=%d\n",sizeof(a),sizeof(*a));//48,16
printf("a包含的元素个数是:%d,*a包含元素个数是:%d\n",sizeof(a)/n,sizeof(*a)/n);//12,4
//a的大小与数组大小相同,*a代表了第0行的首地址,包含四个元素
printf("-------------------------------------------\n");
printf("a[0]=%d,*(a+0)=%d\n",a[0],*(a+0));//&,&
printf("a[0] size=%d,*(a+0)=%d\n",sizeof(a[0]),sizeof(*(a+0)));//16,16
printf("a[0]包含的元素个数是:%d,*(a+0)包含元素个数是:%d\n",sizeof(a[0])/n,sizeof(*(a+0))/n);//4,4
//a[0]与*(a+0) 等价代表第0行的首地址,包含4个元素
printf("-------------------------------------------\n");
printf("&a[0]=%d,&a[0][0]=%d\n",&a[0],&a[0][0]);//&,&
printf("&a[0] size=%d,&a[0][0] size=%d\n",sizeof(&a[0]),sizeof(&a[0][0]));//4,4
printf("&a[0]包含的元素个数是:%d,&a[0][0]包含元素个数是:%d\n",sizeof(&a[0])/n,sizeof(&a[0][0])/n);//1,1
//&a[0]代表第0行0列的地址,&a[0] [0]也是如此
printf("-------------------------------------------\n");
printf("a[1]=%d,a+1=%d\n",a[1],a+1);//&+16,&+16
printf("a[1] size=%d,a+1=%d\n",sizeof(a[1]),sizeof(a+1));//16,4
printf("a[1]包含的元素个数是:%d,a+1包含元素个数是:%d\n",sizeof(a[1])/n,sizeof(a+1)/n);//4,1
//a[1]代表第1行元素首地址,包含4个元素,而a+1也应代表第1行的首地址,
printf("-------------------------------------------\n");
printf("&a[1][0]=%d,*(a+1)+0=%d\n",&a[1][0],*(a+1)+0);//&+16,&+16
printf("&a[1][0] size=%d,*(a+1)+0 size=%d\n",sizeof(&a[1][0]),sizeof(*(a+1)+0));//4,4
printf("&a[1][0]包含的元素个数是:%d,*(a+1)+0)包含元素个数是:%d\n",sizeof(&a[1][0])/n,sizeof(*(a+1)+0)/n);//1,1
//&a[1][0]代表第1行第0列元素地址,包含1个元素,而*(a+1)+0也应代表第1行第0列元素的地址,包含1个元素
printf("-------------------------------------------\n");
printf("a[2]=%d,*(a+2)=%d\n",a[2],*(a+2));//&+32,&+32
printf("a[2] size=%d,*(a+2) size=%d\n",sizeof(a[2]),sizeof(*(a+2)));//16,16
printf("a[2]包含的元素个数是:%d,*(a+2)包含元素个数是:%d\n",sizeof(a[2])/n,sizeof(*(a+2))/n);//4,4
//a[2]代表第2行元素首地址,包含4个元素,而*(a+2)也代表第2行的首地址,包含4个元素
printf("-------------------------------------------\n");
printf("&a[2]=%d,a+2=%d\n",&a[2],a+2);//&+32,&+32
printf("&a[2] size=%d,a+2 size=%d\n",sizeof(&a[2]),sizeof(a+2));//4,4
printf("&a[2]包含的元素个数是:%d,a+2包含元素个数是:%d\n",sizeof(&a[2])/n,sizeof(a+2)/n);//1,1
//&a[2]代表第2行元素首地址
printf("-------------------------------------------\n");
printf("a[1][0]=%d,*(*(a+1)+0)=%d\n",a[1][0],*(*(a+1)+0));//9,9
printf("a[1][0] size=%d,*(*(a+1)+0) size=%d\n",sizeof(a[1][0]),sizeof(*(*(a+1)+0)));//4,4
printf("a[1][0]包含的元素个数是:%d,*(*(a+1)+0))包含元素个数是:%d\n",sizeof(a[1][0])/n,sizeof(*(*(a+1)+0))/n);//1,1
printf("-------------------------------------------\n");
system("PAUSE");
return 0;
}