首页 > 试题广场 >

若有下列定义,则对 a 数组元素地址的正确引用是()?

[单选题]
若有下列定义
int a[5], *p = a;
则对 a 数组元素地址的正确引用是( )
  • *(p+5)
  • *p+2
  • *(a+2)
  • *&a[5]
题目不够严谨,同意楼下没有答案的说法。
B选项:
    表达式*p+2的过程是:取p的地址里的内容,得到一个地址,然后再取新得到的这个地址里的内容,得到一个值,然后将这个值与2相加。p指向a[0][0],显然引用了a数组元素的地址。
C选项:
    表达式*(a+2)的过程:由a得到数组首元素的地址,然后从此地址后移两个元素的距离,此时是一个新的地址,然后再取地址里的内容,显然也引用了a数组元素的地址。
发表于 2020-01-18 16:26:56 回复(0)
更多回答
要我说,没答案,题目说对数组元素地址的引用,AD错误不需要多说。C,明显是引用了a[2],这是个元素,不是地址,所以应该是错的。B也是先引用a[0](因为p指向a数组首地址,即a[0])再a[0]+2,也可说是对数组元素的引用。所以如果题目说的是对地址的引用,应该是没答案。
发表于 2018-08-22 15:06:59 回复(3)
A . *(p+5)相当于要取a[5],这个值是不存在的。数组a的下标最多取4.
B. 相当于a[0]的值加2,这不是对地址的操作
D. 数组a的下标最多取4.
发表于 2018-05-22 17:53:04 回复(2)
A中数组下标越界
发表于 2017-08-27 13:28:06 回复(0)
数组名可以使用加减,但不能自增自减,因为数组名所指第一个元素这个位置不能变
发表于 2018-03-25 11:56:13 回复(0)
A和D一样 都相当于在调用a[5], 而a[5]的数组下标只有0到4
B相当于调用了a[0]再把该值加2, 并不是正确的引用
发表于 2017-09-28 17:51:35 回复(3)

如果不给数组a赋值,那么结果是:
图片说明
为了测试,我给数组a赋了值,如下。运行结果:
图片说明
A、D选项地址越界,B、C选项输出的都是数组元素a[2]的值。
没有选项是对数组元素地址的引用啊,没有答案???

发表于 2020-04-29 09:18:58 回复(3)
*p+2是对值+2
发表于 2019-07-09 19:05:56 回复(2)
选项没问题,不过感觉题目表述的有问题,应该是对数组元素的正确引用吧?
发表于 2018-06-23 11:56:27 回复(0)
题目错了,没有一个选项对得上的
发表于 2023-08-18 10:54:07 回复(0)
a,d越界了
发表于 2023-08-06 22:56:35 回复(0)
感觉没答案
发表于 2023-01-13 00:38:42 回复(0)
鄙人题目没有正确答案,只能说c是正确引用数组元素,ad越界,b先和*结合
发表于 2022-08-03 19:32:11 回复(0)
A.D越界;B写法不对
发表于 2022-03-28 22:52:06 回复(0)
A,*(p + 5)== a[6],数组越界,所以错误
发表于 2021-05-10 14:33:40 回复(0)

B不对??

发表于 2019-10-09 13:15:24 回复(0)