首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

如何能改变字符串常量的值

2012-02-04 
怎么能改变字符串常量的值?为什么使用数组就可以改变字符串常量,而使用指针就不行了charna[]123 charn

怎么能改变字符串常量的值?
为什么使用数组就可以改变字符串常量,而使用指针就不行了
char   na[]   =   "123 ";
char   nb[]   =   "45 ";
char   *nc   =   "789 ";
char   *nd   =   "987 ";
strcpy(na,   nb);
strcpy(nc,   nd);
printf( "%s\n%s\n ",   na,   nb);
printf( "%s\n%s\n ",   nc,   nd);

[解决办法]
小弟水平的确是差,让大家见笑了。请楼上的解释一下为什么C语言中为什么不让改变字符串长量的值啊。
不是C语言,是操作系统规定的
[解决办法]
常量存放的地址是编译器专门提供的一块内存区域,
有些编译器会给这些区域加上类似read-only的属性,有些则不会.
所以这还跟编译器有关.
你所使用的编译器是采用给常量数据区加read-only的属性的.所以
当使用char *nc = "789 ";
然后试图修改 *nc的数值.那是不允许的.在你的编译器中常量是不可改变的.

而使用char na[] = "123 ";
是对数组变量na进行赋值操作.
之后使用的na都是局部变量不是常量 "123 ".所以这并不是改变了常量,而是改变了变量.所以不是同一个概念.

热点排行