为什么 *p = *q 会报错???

mamalsk 2012-02-25 10:59:44
如题,在VC6.0里面有如下程序:

void main()
{
char* p = "12345";
char* q = "abcdef";

*p = *q; // 这里报错 access violation
}

请问高手这是为什么?
...全文
530 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wizard_tiger 2012-02-26
  • 打赏
  • 举报
回复
五楼正解!
小班得瑞 2012-02-26
  • 打赏
  • 举报
回复
就是一个问题,字符串是常量,不能改写
luotuo44 2012-02-26
  • 打赏
  • 举报
回复
像char *q = "12345";字符串“12345”是存储在常量内存区的。就是说字符串的内容不能被修改。
c87527124 2012-02-26
  • 打赏
  • 举报
回复
char* p = "12345";//这样定义,则学符串“12345”在常量区,p自身可以改变,但不能通过p改变“12345”(在常量区)

__Kyle 2012-02-25
  • 打赏
  • 举报
回复
5楼正解,鉴定完毕。。。
missArthas 2012-02-25
  • 打赏
  • 举报
回复
#pragma comment(linker,"/SECTION:.rdata,RW")
//这句话设置链接器选项让常量字符串内存区可写

7楼厉害,嘿嘿,学到了。
如此美丽的你 2012-02-25
  • 打赏
  • 举报
回复

开头加上这句试试!
#pragma comment(linker,"/SECTION:.rdata,RW")

missArthas 2012-02-25
  • 打赏
  • 举报
回复
5楼正解,是把第一个串的第一个字符换成了第二个串的第一个字符。
东莞某某某 2012-02-25
  • 打赏
  • 举报
回复
int main()
{
char szSrc[] = "12345";
char szDes[] = "abcdef";

char* p = szSrc;
char* q = szDes;

*p = *q;

return 0;
}
游戏设计师 2012-02-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mamalsk 的回复:]

引用 1 楼 dyangrun 的回复:

常量不能改~
你应该写 p = q;


我是想把字符串q里面的第一个字符替换p的第一个字符其他不变
[/Quote]
那你应该自己申请空间~
mamalsk 2012-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dyangrun 的回复:]

常量不能改~
你应该写 p = q;
[/Quote]

我是想把字符串q里面的第一个字符替换p的第一个字符其他不变
游戏设计师 2012-02-25
  • 打赏
  • 举报
回复
常量不能改~
你应该写 p = q;

69,371

社区成员

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

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