首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请帮忙看看下面的指针赋值为什么会错解决方案

2012-04-08 
请帮忙看看下面的指针赋值为什么会错char*str1 www.google.com char*pssstristrlen(str1)for(j0

请帮忙看看下面的指针赋值为什么会错
char   *str1= "www.google.com ";
char   *pss=str;
i=strlen(str1);
for(j=0;j <i;j++)
{
if(*str1== '. ')
{
*str1= '@ ';//这里就死出来了
}
str1++;
}
printf( "str1:%s\n ",str1);

而且用:char   *str1= "www.google.com ";
char   *str2= ". ";
strtok(str1,str2);这里也会出错,
这两个错都是运行时直接死出来,请问错在哪呢?
                 
改成数组后就没问题
char   str1[]= "www.google.com ";
i=strlen(str1);
for(j=0;j <i;j++)
{
if(str1[j]== '. ')
{
str1[j]= '@ ';
}
}
printf( "str1:%s\n ",str1);

[解决办法]
char *str1= "www.google.com ";
"www.google.com " 是静态常量。
你声明的指针是一个指向静态常量的指针。
[解决办法]
char *str1= "www.google.com ";
是常量字符串,修改是非法的.

[解决办法]
char *str1= "www.google.com ";

这只是定义了一个指向字符串的指针而已,这个指针它指向这个字符串的首地址,

而字符串是常量,在整个程序运行的过程中都是不可以修改的。

所以你这样:
*str1= '@ '
相当于对字字符串常量进行了修改,当然是不允许的

数组是可以修改的,所以改成数组之后运行正确
[解决办法]
其实char *str1= "www.google.com ";

写成这样更明确:const char *str1= "www.google.com ";

也就是说,这个字符串是不可以被修改的常量

热点排行