
26.有以下程序 main() { char s[ ]= "abcde"; s+=2; printf("%d\n",s[0]); } 执行后的结果是______
3个回答
展开全部
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。但是指针常量是不能被修改的。这里的指针常量就可以看成是上面提到的那个数组名。我是这么理解的。
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。但是指针常量是不能被修改的。这里的指针常量就可以看成是上面提到的那个数组名。我是这么理解的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询