鱼C论坛

 找回密码
 立即注册
查看: 4999|回复: 6

请教一个很简单的C问题。。。

[复制链接]
发表于 2012-10-11 10:35:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
   #include <stdio.h>

int main()
{
        char *s="abc";
        *s='b';
        //*(s+1)='a';
        printf("%s",s);



    return 0;
}
运行时发生mm.exe 中的 0x01081a28 处有未经处理的异常: 0xC0000005: 写入位置 0x010857a8 时发生访问冲突
请教原因。。 不能通过指针修改这个字符串么?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-11 15:46:26 | 显示全部楼层
你打算怎么修改,说出你程序的意图
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-11 17:17:53 | 显示全部楼层
输出的s貌似是一个地址。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-11 17:24:04 | 显示全部楼层
好好在把c语言的书好好看看
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-11 17:44:53 | 显示全部楼层
出问题的是 你定义了一个指针指向一个字符串常量 "abc"  这个字符串常量是不允许修改的 如果用char s[]="abc";你的代码就没什么问题了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-11 18:29:10 | 显示全部楼层
楼上正解,用你的方式定义的是一个字符串常量,通常编译为可执行程序后,一般保存在只读的文本段,是不可修改的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-12 19:34:35 | 显示全部楼层
我刚学C   所以 各位大侠说的 我实在没听懂  我要努力啊  !!!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-15 12:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表