C语言关于指针的三道简单选择题,来个大神解释下,谢谢

1如果有定义int a[30], *pa=a; 则数组a中下标为i的元素的地址为 。

A.
p+i*2

B.
p+(i-1)*2

C.
p+(i-1)

D.
p+i

正确答案: B 你错选为D

2若有如下定义,则__________是对数组元素的正确的引用。

int a[10] , *p =a;

A.
*&a[10]

B.
*&a[0]

C.
*(p-11)

D.
*(a+11)

正确答案: A 你错选为B

3若有定义:int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是 。

A.
x[3]

B.
p1=x+3,*p1++

C.
p1=x+2,*(p1++)

D.
p1=x+2,*++p1

正确答案: C 你错选为B

文字看起来不舒服的看图片。

第一题明显D是答案
第二题明显ACD数组越界错误 正确答案为B
第三题A x[3]为3无疑问,B p1为x[3]的地址 ++是后++不需考虑 也是3 C p1为x[2]地址,后面的++无论括号与否都是表达式执行完最后执行,D 先++之后也是x[3]的地址 明显正确。
所以只有C错误 答案为C

这个题库正确答案都给不出来,显然不值得你去练习,建议换地方做题~
第二题那么明显的大小为10的数组下标最多为9这种题目都答案给错,可见出题者的水平,第一题无论怎样都不可能离开C和D 答案居然为B太侮辱智商。不必纠结了 想学习指针去看C指针与陷阱这本书
温馨提示:答案为网友推荐,仅供参考
相似回答