#include<stdlib.h>
#include<string.h>
int main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int n=sizeof(a[0][0]);
printf("a=0x%x,*a=0x%x\n",a,*a);
printf("a size=%d,*a size=%d\n",sizeof(a),sizeof(*a));
printf("-------------------------------------------\n");
printf("a[0]=0x%x,*(a+0)=0x%x\n",a[0],*(a+0));
printf("a[0] size=%d,*(a+0)=%d\n",sizeof(a[0]),sizeof(*(a+0)));
printf("-------------------------------------------\n");
printf("&a[0]=0x%x,&a[0][0]=0x%x\n",&a[0],&a[0][0]);
printf("&a[0] size=%d,&a[0][0] size=%d\n",sizeof(&a[0]),sizeof(&a[0][0]));
printf("-------------------------------------------\n");
printf("a[1]=0x%x,a+1=0x%x\n",a[1],a+1);
printf("a[1] size=%d,a+1=%d\n",sizeof(a[1]),sizeof(a+1));
printf("-------------------------------------------\n");
printf("&a[1][0]=0x%x,*(a+1)+0=0x%x\n",&a[1][0],*(a+1)+0);
printf("&a[1][0] size=%d,*(a+1)+0 size=%d\n",sizeof(&a[1][0]),sizeof(*(a+1)+0));
printf("-------------------------------------------\n");
printf("a[2]=0x%x,*(a+2)=0x%x\n",a[2],*(a+2));
printf("a[2] size=%d,*(a+2) size=%d\n",sizeof(a[2]),sizeof(*(a+2)));
printf("--------------------------------------- ---\n");
printf("&a[2]=0x%x,a+2=0x%x\n",&a[2],a+2);
printf("&a[2] size=%d,a+2 size=%d\n",sizeof(&a[2]),sizeof(a+2));
printf("-------------------------------------------\n");
printf("a[1][0]=0x%x,*(*(a+1)+0)=0x%x\n",a[1][0],*(*(a+1)+0));
printf("a[1][0] size=%d,*(*(a+1)+0) size=%d\n",sizeof(a[1][0]),sizeof(*(*(a+1)+0)));
printf("-------------------------------------------\n");
return 0;
}
本文通过一个具体的C语言程序示例,详细解析了二维数组的内存地址、大小及访问方式,帮助读者深入理解指针与数组之间的关系。

4813

被折叠的 条评论
为什么被折叠?



