怎么能改变字符串常量的值?
为什么使用数组就可以改变字符串常量,而使用指针就不行了
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 ".所以这并不是改变了常量,而是改变了变量.所以不是同一个概念.