首页 新闻 会员 周边 捐助

注释行的写法为什么不对,哪里地址越界了

0
悬赏园豆:10 [已解决问题] 解决于 2010-10-22 22:10
#include <iostream>
using namespace std;

void delChar(char *str, char c)
{
int i,j=0;
for(i=0; *(str+i); i++)
{
if(*(str+i) != c)
{
str[j
++] = str[i];
}
}
str[j]
= '\0';
}

int main()
{
char str[] = "abcdefgh"; // 注意,此处不能写成char *str = "abcdefgh";
printf("%s\n", str);
delChar(str,
'd');
printf(
"%s\n", str);
return 0;
}

 

问题补充: 将注释行的char str[]改成char *str,编译错误,我是问这个问题
扬名的主页 扬名 | 初学一级 | 园豆:190
提问于:2010-10-15 21:52
< >
分享
最佳答案
0

参考:http://zhidao.baidu.com/question/18928176

其中说到:字符数组,你可以对数组元素进行修改,而指针指向一个字符串常量,它是不可修改的(如果对其修改,这种行为是未定义的)。

收获园豆:10
aguiagui | 菜鸟二级 |园豆:305 | 2010-10-20 11:22
对哦,指针只能指向不同的字符串常量,不能通过指针修改字符串常量,常量啊
扬名 | 园豆:190 (初学一级) | 2010-10-22 22:09
其他回答(3)
0

编译运行都正常,结果也对,没有错误

散客游 | 园豆:9 (初学一级) | 2010-10-16 01:26
将注释行的char str[]改成char *str,编译错误,我是问这个问题
支持(0) 反对(0) 扬名 | 园豆:190 (初学一级) | 2010-10-16 19:00
0

参考:http://zhidao.baidu.com/question/122507151.html?fr=ala0

Astar | 园豆:40805 (高人七级) | 2010-10-16 21:15
0

如何使用char* 的话,因为“asdasdas”是一个常量,在常量区存储,你不能修改他。如果使用char[]的话,是采用字符数组的形式存储的。是一个变量,比如类似于array[0]='a',这种形式,你自然可以修改的。

Rollen Holt | 园豆:210 (菜鸟二级) | 2012-05-03 15:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册