首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一路C语言面试题,来看看

2012-10-14 
一道C语言面试题,来看看!假设下列声明是有效的:C/C++ codeint a[]{5,15,34,54,14,2,52,72}int *p&a[1],

一道C语言面试题,来看看!
假设下列声明是有效的:

C/C++ code
int a[]={5,15,34,54,14,2,52,72};int *p=&a[1],*q=&a[5];


(a) *(p+3)的值是多少? 14
(b) *(q-3)的值是多少? 34
(c) q-p的值是多少? -13
(d) *p < *q 的结果是真还是假? 假

我做的对不对,如果错了,错在哪里,帮我讲一下,谢谢!!

[解决办法]
*(p+3)=14
*(q-3)=34
q-p=4
*p < *q = 0
[解决办法]
(c) q-p的值是多少? 4

其他对的
[解决办法]
q-p是间隔几个成员的意思,和数据类型无关,就像p+3一样,实际跨越的长度是12
[解决办法]
第三个不对了,q-p = 4;
p 指向数组a[1]的地址,q指向数组a【5】的地址
[解决办法]
探讨
*(p+3)=14
*(q-3)=34
q-p=4
*p < *q = 0

[解决办法]
q-p为指针相减,结果为4.
如果两个指针向同一个数组,它们就可以相减,其为结果为两个指针之间的元素数目.

热点排行