帮忙看看为什么会有内存错误。

NEU_LoveU 2012-10-03 03:20:01

char *test(char *str)
{
while(*str++ != '\0')
*str++ ='a';
return str;
}

void main()
{
char *st="jhfjkgh";
char *tmp=test(st);
.....
}


如果是这种情况,怎么会报内存方面的错呢。调用的函数的参数不已经是个地址了么。
...全文
164 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxiaoyun123 2012-10-04
  • 打赏
  • 举报
回复
学习下 似乎我也犯这种错
suixinpiaodang 2012-10-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

char *st="jhfjkgh";
是个不可写内存
换成

char st[]="jhfjkgh";
[/Quote]

正解,,学习下。。。
魔笛手 2012-10-04
  • 打赏
  • 举报
回复
字符串是常量,是不可以改变里面的内容的,
RJS_April 2012-10-04
  • 打赏
  • 举报
回复
不溢出反而不正常了
SP_mah0ne 2012-10-03
  • 打赏
  • 举报
回复
除了上面说的, 程序貌似也越界了
qwe8642514 2012-10-03
  • 打赏
  • 举报
回复
楼主的程序是干什么的?return *str是干什么的?
chongzipy 2012-10-03
  • 打赏
  • 举报
回复
试图修改文字常量区的内容。
huangxy10 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

char *st="jhfjkgh";
是个不可写内存
换成

char st[]="jhfjkgh";

如果是这样的话,要对字符串进行修改之类操作,就只能用数组了?
[/Quote]

是的,修改只能用数组存,用字符串常量的话没有办法修改。
NEU_LoveU 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

char *st="jhfjkgh";
是个不可写内存
换成

char st[]="jhfjkgh";
[/Quote]
如果是这样的话,要对字符串进行修改之类操作,就只能用数组了?
独自听枫 2012-10-03
  • 打赏
  • 举报
回复
楼上正解
jackyjkchen 2012-10-03
  • 打赏
  • 举报
回复
char *st="jhfjkgh";
是个不可写内存
换成

char st[]="jhfjkgh";

69,371

社区成员

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

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