| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:这几行代码为何出错了?
只看楼主 加入收藏
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
收藏
 问题点数:0 回复次数:6 
这几行代码为何出错了?
程序代码:
#include <stdio.h>

int main()
{
    char *p = "Hello";
    char *a = p+2;
    *a = 'K';
    printf("%s\n", p);
    return 0;
}


Linux 运行之后提示:段错误!


谢谢啦
搜索更多相关主题的帖子: return 
2011-11-18 23:17
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
你的hello world存到了代码段(CS) 这里面的数据都是只读的  而你的*a = 'K'是要修改里面的数据

                                         
===========深入<----------------->浅出============
2011-11-18 23:20
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 2楼 laoyang103
字符串常量,放在常量区,不允许修改

总有那身价贱的人给作业贴回复完整的代码
2011-11-18 23:24
sun_shang001
Rank: 2
等 级:论坛游民
帖 子:103
专家分:78
注 册:2011-10-27
收藏
得分:0 
前面的说的都正确,我可以说的更通俗一点:
指针可以理解为地址,而地址一旦确定是不可以改变的
#include <stdio.h>

int main()
{
    char *p = "Hello";
    char *a = p+2;//
    *a = 'K';//这两行是矛盾的,上面*a的值已经确定,所以不可以强迫赋值为K的地址
    printf("%s\n", p);
    return 0;
}
2011-11-19 00:38
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 4楼 sun_shang001
恰恰你说得不对

总有那身价贱的人给作业贴回复完整的代码
2011-11-19 08:02
id3663423
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:48
专家分:63
注 册:2009-4-15
收藏
得分:0 
#include <stdio.h>

int main()
{
    char *p = "Hello";
    char *a;
    a = p+2;
    *a = 'K';
    printf("%s\n", p);
    return 0;
}
不能这么赋初值啊,char *a = p+2;是不对的吧

[ 本帖最后由 id3663423 于 2011-11-19 08:55 编辑 ]

每多学一点知识,就少写一行代码.
2011-11-19 08:52
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
收藏
得分:0 
常量 不能修改
2011-11-19 12:34
快速回复:这几行代码为何出错了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018615 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved