读书人

一路C语言面试题来看看

发布时间: 2012-10-14 14:55:07 作者: rapoo

一道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.
如果两个指针向同一个数组,它们就可以相减,其为结果为两个指针之间的元素数目.

读书人网 >C语言

热点推荐