有关栈和文字常量区的问题
char s1[] = "aaaaaaaaaaaaaaa";s1的区别在于其空间是在栈上分配的,所以在程序中你可以改变字符串的内容char *s2 = "bbbbbbbbbbbbbbbbb";s2指向的是文字常量区,所以在程序中你如果改变字符串内容 ,就会报错,这些都没有问题。
不过网上说aaaaaaaaaaa是在运行时刻赋值的;
而bbbbbbbbbbb是在编译时就确定的;这里我就我不怎么理解了,
这两句话 字符串应该都存储在文字常量区,之所以一个能改,另外一个不能改,在于 第一句是吧文字常量区的字符串复制了一份给了 s1,所以s1只是修改的副本,副本是存储在栈中的。而第二句,s2直接指向文字常量区,所以不能修改。
而[bo]这两句都应该是运行时复值的[/bo],(只不过一个是指针一个是数组),而且这两个字符串存储在文字常量区[bo],应该都是编译时都已经确定了[/bo] 。问题就这么多了
新建c语言交流群 ,针对 c primer plus这本书 希望高手加入
[[it] 本帖最后由 toyix 于 2008-11-4 18:58 编辑 [/it]]