字符串存在常量区不能改变的疑问
char *string="Welcome to the fishc.com!!\n";
这样子字符串应该是存放在常量区,不能改变的吧!
为什么下面的语句可以正常执行!
string="I love the fishc.com!!\n";
←_← char * string 是个指针
string的值对应的那块内存是存放字符串内容
大小不确定以00 为结束标志 这好比
int * p = &a;
......
p = &b;
a和b是两个不同的变量一样,那两个字符串存放在不同的常量区而已,改变的是string的指向 沉默默 发表于 2014-8-7 23:02
这好比
int * p = &a;
......
我明白了!谢谢! 刚刚看了后面教程!出现同样的情况!深入分析了下!对这个问题的分析比原来更清晰了!
char *str="Welcome to Fishc.com!";
当执行 str='w'; 将会出错,因为这个操作是要改变字符串里面的值!而这个字符串是存放在常量区的!不能改变!
当执行 str="I love fishc.com!"; 则运行不会出错!因为这个语句是让str这个指针指向I love fishc.com 这个字符串!并不是去改变原来字符串中的值! 本帖最后由 MyOrange 于 2014-9-10 21:45 编辑
看完这张图,你有何感想呢
MyOrange 发表于 2014-9-10 21:41
看完这张图,你有何感想呢
靠,已经解决了
页:
[1]