26.有以下程序 main() { char s[ ]= "abcde"; s+=2; printf("%d\n",s[0]); } 执行后的结果是______

为什么选D,好像在哪里看过s+=2;可以,为什么说不可以,在什么情况下可以数组不也是指针吗... 为什么选D,好像在哪里看过s+=2;可以,为什么说不可以,在什么情况下可以
数组不也是指针吗
展开
 我来答
万柠衡师2t
推荐于2017-10-06 · TA获得超过418个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:194万
展开全部
s里面存的是字符串abcde的地址,不能被修改。
s += 2 的话就会修改s的值,所以不可以。
可以这样:
char s[ ] = "abcde";
char *a = s + 2;
printf("%d\n",a[0]); //输出的是99 ,即c的ascii码值。
------------------------------------------------------------------------------
对于你的问题补充,我是这样理解的:
s的值是不能被修改的。然而s += 2 就是 s = s + 2。这样会修改s的值。
如果你想指向s的下两个字符,应该再定义一个字符指针变量,用它来操作。
不知道我理解的对不对。
-------------------------------------------------------------------------------
问:数组不也是指针吗
答:数组不是指针。数组名存的是数组首地址,这个应该是不能被修改的常量。就像你上面程序里的s。
指针可以是指针常量也可以是指针变量。对于指针变量,是可以修改它的值的,就像我的程序里的a。但是指针常量是不能被修改的。这里的指针常量就可以看成是上面提到的那个数组名。我是这么理解的。
零能量超动力
2011-02-17 · TA获得超过823个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:203万
展开全部
C语言中字符串不能用+号相加,除非是C++,将加好重载才可以的,要想把字符串相加,得用函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
的故事都是
2011-02-17
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
cvj
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式