c语言的字符数组问题。。已知 :char s[100] ; int i=10; 则在下列引用数组元素的语句中,错误的表示是:

A、s[i+10] B、*(s+i) C、*(i+s) D、*((s++)+i)

应该选哪个?顺便解释一下~~谢谢~

最后一个D选项是错误的,s++是一个表达式,不能对表达式进行求指针运算,其他3个答案都是正确的!!追问

在2维数组中有 pi=a *(pi[i]+j)表示a[i][j] pi[i]+j不算是表达式吗?

追答

确实是,你可以重新定义一个指针,然后把数组地址赋给这个指针,第4个答案就是对的了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-11
D
数组名被当做常指针,所以不能对其进行自加运算。追问

额。。。。常指针。。是什么?

追答

就相当于常量啊。是不能被改变的,试图改变它编译器会报错。
比如
const int max = 100; //定义一个整形常量max=100 就是100了
max = 200; //试图修改它,编译器会报错
再说的详细点
int a = 3;
int b = 2;
int const *p = &a; //p是一个常指针,初始化为a的地址
p = &b; //编译器会报错,p是常指针,只能指向a的地址,不能改变它

本回答被提问者采纳
第2个回答  2012-05-11
D是错误的。
s是数组的首地址,不能做++运算
第3个回答  2012-05-11
D

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网