这道c语言怎么做啊?

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:53:48
#include <stdio.h>
main()
{int a[]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);printf("%x\n",p+9);
}
求答案及过程,谢谢了
忘了问题还没有完,若一个int类型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句的输出结果是:

输出地址值嘛
这个每次运行都应该不一样的
而且正如上面问的
机器不一样
int所占用的空间不一样
结果也会不一样的
第一个语句是用十六进制输出数组的首地址
第二条语句是输出a〔10〕的地址
问题的答案
先把194转换成十进制数
加上2*9=18
之后再把得到的数字转换为十六进制就是结果了

把a首地址送给p,然后通过指针输出a[0]和a[9],即1和0,X好像是16进制数吧,那么就是01和00。

第一个输出一个地址值,是数组a的地址值,也即a[0]的地址值。(不同于*p,*p代表该地址存放的变量值),因为p指向整个数组a。第二个输出以数组a的首地址为基础,向后偏移9个数组元素长度的值,即+9

输出以16进制显示

首先"p=a;"这句话表示把数组a[]的首地址赋值给p,因此第一个输出是a[0],又因为是"%x\n"所以要把数转化为16进制数,然后"p+9"表示a[0+9],因此输出结果是a[9],又因为是"%x\n"所以要把数转化为16进制数。