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

为什么选D,好像在哪里看过s+=2;可以,为什么说不可以,在什么情况下可以
数组不也是指针吗
最新回答
当风起时

2024-12-01 02:29:24

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。但是指针常量是不能被修改的。这里的指针常量就可以看成是上面提到的那个数组名。我是这么理解的。
雪鬓

2024-12-01 11:09:53

C语言中字符串不能用+号相加,除非是C++,将加好重载才可以的,要想把字符串相加,得用函数
最纯洁De天使つ

2024-12-01 01:36:13

cvj