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);
}
展开
 我来答
xoaxa
2017-12-13 · TA获得超过8605个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3374万
展开全部

#include <stdio.h>
void main() {
int a[3][4];
printf("\n%x", a);//输出a首个元素的地址
printf("\n%d",sizeof(a[0][0]));//在32位系统上的输出结果为4
printf("\n%x", a[0] + 2);//以下三个输出均为地址信息
printf("\n%x", &a[1] + 1);
printf("\n%x\n", &a[0][0] + 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]的地址
整个程序注释完成,其实你一直在输出数组的地址,而不是其数字.
追问
最后一个为什么是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);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
521xx60
2017-12-13
知道答主
回答量:3
采纳率:0%
帮助的人:2630
展开全部
什么意思,划线看不出来啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式