一道C语言数组的题,求C高手帮忙

2024-12-03 13:12:56
推荐回答(4个)
回答1:

#include
main()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; //定义了一个10个元素的数组,每个元素int类型,还定义了一个p指针.
p=a; //p指针指向数组a
printf (“%x\n”,p); //输出把p的地址以十六进制显示,
printf (“%x\n”,p+9);//p+9表示移动9个int类型的距离的地址之后换成十六进制显示,
}
如果你的确想打印地址,使用%p 格式就行了,默认是16进制表示,效果和%x一样,但是省去了部分操作。

若一个int类型的变量占2个字节,
第一个printf语句输出的是194,则第二个printf语句的输出结果是
这个题的意思是问你第一个元素到最后一个元素总共占了多少个字节
0x194 +2* 9=
自己算吧,懒得换算了。
194表示十六进制的数组首地址,一个Int类型占用2个字节,那么移动9个元素的距离就是2*9个字节,然后显示地址就是了。
这个深入到内存里类型的表示格式,你记住+1表示移动一个元素类型的距离就行了。

回答2:

注意这里的%x输出格式是十六进制,首地址增加9,相当于移动了18个字节,18转为十六进制就是ox12。ox194+ox12=ox(1(9+1)6),十六进制中a为10,故最终结果为1a6。

回答3:

194 + 2 * 9 = 212

回答4:

0x194+0x12=0x1a6