c语言指针部分题型
c语言指针部分题型8.划线两输出语句分别输出13ff50和4voidmain(){inta[3][4];printf("\n%x",a);printf("\n%d",si...
c语言指针部分题型8.划线两输出语句分别输出13ff50和4
void main( )
{ int a[3][4];
printf("\n%x", a);
printf("\n%d",sizeof(a[0][0]));
printf("\n%x", a[0]+2);
printf("\n%x", &a[1]+1);
printf("\n%x", &a[0][0]+3);
} 展开
void main( )
{ int a[3][4];
printf("\n%x", a);
printf("\n%d",sizeof(a[0][0]));
printf("\n%x", a[0]+2);
printf("\n%x", &a[1]+1);
printf("\n%x", &a[0][0]+3);
} 展开
3个回答
2017-12-13
展开全部
printf("\n%x", a); //打印输出数组a的首地址,每次编译可能不一样,由系统分配
printf("\n%d",sizeof(a[0][0]));// 4表示数据类型int型在内存中占用4字节
printf("\n%x", a[0]+2);//打印输出a[0][2]的地址
printf("\n%x", &a[1]+1);//打印输出a[1][1]的地址
printf("\n%x", &a[0][0]+3);//打印输出a[0][3]的地址
整个程序注释完成,其实你一直在输出数组的地址,而不是其数字.
printf("\n%d",sizeof(a[0][0]));// 4表示数据类型int型在内存中占用4字节
printf("\n%x", a[0]+2);//打印输出a[0][2]的地址
printf("\n%x", &a[1]+1);//打印输出a[1][1]的地址
printf("\n%x", &a[0][0]+3);//打印输出a[0][3]的地址
整个程序注释完成,其实你一直在输出数组的地址,而不是其数字.
追问
最后一个为什么是13ff5c这个c是怎么来的
追答
第一句可以看出数组a的首地址为0x13ff50,第二句看出int型在内存中占用4字节,
所以a[0][3]的地址=0x13ff50+4*3=13ff5c
另外,&a[0][0]相当于a,即数组的指针
printf("\n%x", &a[0][0]+3);相当于:
int *p=&a[0][0];
printf("\n%x", p+3);
或者 printf("\n%x", a+3);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询