关于指针指向字符串常量的问题
对于:char *p = "abcdefg";这样的语句,
我所理解的内部处理流程是:系统首先会为"abcdefg"这个字符串分配内存,然后让p指向这个首地址。
p所指向的字符串是常量,因此像*p = ‘h’这样的赋值是会报错的。
我的问题是这里的字符串是常量,为什么允许非常量的p指向这个地址?另外,"abcdedfg"这个常量的存储空间在哪里呢,是程序运行的栈,还是其他地方?
[解决办法]
LZ的理解正确。
"abcdedfg"储存在常量区,是个专门的区域,不是栈。
[解决办法]
这里的字符串是常量,为什么允许非常量的p指向这个地址?
这个问题好像标准都没说清楚。
存放就存放在常量区
[解决办法]
[解决办法]
标准写法应该是:
const char *p = "abcdefg";
char *p = "abcdefg"; 这是过时的写法, 新一代的程序员就不应该这么写了