char *s 指向的内存空间是不是不能修改?

cart55free99 2011-05-16 09:12:48
void main( )
{ char *s=(char *) malloc(10);
gets(s);
puts(s);printf("%d\n", s );
gets(s);
puts(s);printf("%d\n", s ); //2个的地址仍然一样
//这是不是因为这个内存是我亲自分配的 只是char *s指向了这里 ?
//那char *t="abc"; 中abc这个空间的内容为什么就不能改呢?

char *t="abc";
puts(t);printf("%d\n", t );
t="mkio";
puts(t);printf("%d\n", t ); //这里就不一样了
}
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2011-05-16
  • 打赏
  • 举报
回复
char *t="abc";

abc是字符串常量,放在常量区域里。无法修改
bdmh 2011-05-16
  • 打赏
  • 举报
回复
char *t="abc",这个abc是常量,在常量区域,不能修改
ljt3969636 2011-05-16
  • 打赏
  • 举报
回复
char *t="abc"是生成一个字符串"abc"让t指向那里,相同的字符串的地址是一样的,不同的字串的地址是不一样的

char *t1="abc"
char *t2="abc"
char *t3="abc"

t1 t2 t3存的值一样就是abc字串的地址,且该字串是常量无法修改!!

char *s=(char *) malloc(10);这样是你手动在堆上申请的空间,没有常量性是可以改的。

69,373

社区成员

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

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