首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
C/C++
C语言
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
一个令人头疼的指针问题!!!!
加为好友
发送私信
在线聊天
zzkk_200
清风
等级:
发表于:
2008-04-19 10:45:03
楼主
#include <stdio.h>
#include <stdlib.h>
main()
{
char s1[10]="mystring";;
char *s2;
s2=s1;
printf("%s\n",s1);
printf("%s\n",s2);
s2[2]='k';
printf("%s\n",s1);
printf("%s\n",s2);
char *t1;
t1=(char *)malloc(sizeof(char)*10);
t1="mystring";
char *t2;
t2=t1;
printf("%s\n",t1);
printf("%s\n",t2);
t2[2]='k';
printf("%s\n",t1);
printf("%s\n",t2);
}
结果:
mystring
mystring
myktring
myktring
mystring
mystring
Segmentation fault
问题点数:
20
回复次数:
8
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sheenl
sheen
等级:
发表于:
2008-04-19 10:47:39
1
楼 得分:
0
char *t1;
t1=(char *)malloc(sizeof(char)*10);
t1="mystring";
char *t2;
这样的话, t1分配的内存泄漏了, 应该用strcpy(t1, "mystring")
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sheenl
sheen
等级:
发表于:
2008-04-19 10:50:01
2
楼 得分:
0
至于Segmentation fault 的原因, 是因为
t1 = "mystring";
t2 = t1;
t2[2] = k;
"mystring"是一个常量字符串, 不可以修改, 所以出现非法内存访问了.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lunarfan
简洁就是美
等级:
发表于:
2008-04-19 10:56:27
3
楼 得分:
0
t2[2]='k';
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhdsheng
mygod318
等级:
发表于:
2008-04-19 11:14:52
4
楼 得分:
0
对于S1和S2,S2[2]='k'是将数组S1中的内容改为'k'.
对于t1和t2都是字符常量的地址,t2[2]='k'试图修改一个字符常量,因此是错误的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
needalfan
等级:
发表于:
2008-04-19 11:21:11
5
楼 得分:
0
支持2楼
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
billy1985
一笔苍穹
等级:
发表于:
2008-04-19 11:21:18
6
楼 得分:
0
一个分配的内存空间在栈空间中,一个位于常量区
所以s2[k]='k'可以赋值
而t2[k]='k'就不可以
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
needalfan
等级:
发表于:
2008-04-19 11:30:49
7
楼 得分:
0
引用 6 楼 billy1985 的回复:
一个分配的内存空间在栈空间中,一个位于常量区
所以s2[k]='k'可以赋值
而t2[k]='k'就不可以
是栈空间吗?不是堆空间吗?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
archangelwin
等级:
发表于:
2008-04-19 11:32:15
8
楼 得分:
0
124楼好详尽..顶起.
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
abc推荐给好友