c 语言2及转换题

来源:百度知道 编辑:UC知道 时间:2024/06/24 07:32:18
问个C题

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);
}
第一个printf输出是194
问第二个printf输出是多少?

我问下,是不是这么理解
P是地址变量,现在输出的是地址变量里存放的地址值,
不是整形1
值是以16进制输出的,所以才莫名奇妙的出来个194
P+9存的是整形0的地址了吧

第一次遇到输出地址,是这么输出的,不适应了

int a{ ] 打错了 应该是 int a[]
P=a 缺少了;分号

以后注意点。
你输出格式%x 本来就是输出地址而不是输出值,如果是输出值应该是%d

如果以地址输出:
第一个输出的P值其实就是 A数组的首地址
第二个输出的P+9的值其实就是首地址 加9 指向A数组中0所存放的地址。

整数占两个字节 16位
如果第一个输出值是FFB2那么第二个就是FFC4了。

本人学艺不精,难免会有很多错误,在此担心误导了你,如果有C语言方面的高手请多多批评。

楼上回答的非常正确.其实还有个小错误
这里printf("%x\n",p); 的第2个p是小写了,应该大写P