对字符串常量的讨论
a:请问一下在c中 数字常量会不会和字符串常量一样 先放到常量区再赋给变量
b:我觉得数字常量没在常量区也没在内存中。因为对字符串取地址是合法表达式,比如说&(“hello”)是合法的,然而对常数取地址就会报错比如说&(3)
a:也是 谢了
a:话说为什么要弄出一个常量区来存字符串
c:我也不知道,可能是方便编译器实现吧。我看过一本书,里面说,c语言不是为了方便程序员的,而是为了方便编译器设计者的。
b:刚才上计算机组成原理课,讲到了指令系统,我又想起了那个问题。好像知道为什么了,因为常数或者字符可以直接当立即数写到指令里,所以不用再有单独的存储区。整个字符串写不到指令里,只能把字符串的始址写指令里,所以字符串常量要用单独的存储区。
a:原来是这样 谢谢你了。 最近学了学汇编感觉对底层的东西也有了一些了解
e:
e:请问这两种初始化方法,是不是只是变量存放地址不一样而已?
f:第一种直接从字符串常量区引用对应。第二种会在堆中创建一个新对象,然后引用这个对象。
ps:本人觉得两种方法得到的字符串地址一样。