一段小程序的疑惑

k1x2d3 2006-09-15 10:13:09
int main(int argc, char* argv[])
{
char* s="you love me!";
char* p=s;
while(*p) p++;
while(p!=s)
{p--;
if(*p==' ')
{printf("%s",p+1);
*p='\0';
}
}
printf("%s",s);
return 0;
}
上面这段程序执行到*p='\0'就会报内存出错,而如果把char* s="you love me!"改成char s[20]="you love me!"就不会出错,为什么?
...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
k1x2d3 2006-09-16
  • 打赏
  • 举报
回复
噢,原来在C++下默认是const常量,我是在VC下编译运行的,不知道在C编译器下会怎么样,多谢各位
mu_yang 2006-09-15
  • 打赏
  • 举报
回复
编译器的问题
在c++中"you love me!" 可以被看成一个 const char * const
但在c里面我记得不是这样,楼主的程序应该没问题
LS_Winson 2006-09-15
  • 打赏
  • 举报
回复
char *s="you love me!" 这句,你只是把一个指针给了S,而且指针指向常量,不能修改

char s[20]="you love" 这样的话,你把字符串填到了相应的内存中,而且这段内存你可以操作
zlcolin 2006-09-15
  • 打赏
  • 举报
回复
如ls所说;
xddzccn 2006-09-15
  • 打赏
  • 举报
回复
char *s="you love me!" 是常量,不能被修改,

char s[20]="you love" 是变量

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧