读书人

关于指针指向字符串常量的有关问题

发布时间: 2012-10-14 14:55:08 作者: rapoo

关于指针指向字符串常量的问题
对于:char *p = "abcdefg";这样的语句,
我所理解的内部处理流程是:系统首先会为"abcdefg"这个字符串分配内存,然后让p指向这个首地址。
p所指向的字符串是常量,因此像*p = ‘h’这样的赋值是会报错的。
我的问题是这里的字符串是常量,为什么允许非常量的p指向这个地址?另外,"abcdedfg"这个常量的存储空间在哪里呢,是程序运行的栈,还是其他地方?


[解决办法]
LZ的理解正确。
"abcdedfg"储存在常量区,是个专门的区域,不是栈。
[解决办法]
这里的字符串是常量,为什么允许非常量的p指向这个地址?
这个问题好像标准都没说清楚。


存放就存放在常量区
[解决办法]

探讨
我的问题是这里的字符串是常量,为什么允许非常量的p指向这个地址?

[解决办法]
标准写法应该是:
const char *p = "abcdefg";

char *p = "abcdefg"; 这是过时的写法, 新一代的程序员就不应该这么写了

读书人网 >C++

热点推荐