char *s = "hello";
上面的代码在程序的只读部分分配了6个字节来存储字符串“hello”(我忘记了这个部分的名称)。然后,s被初始化为指向字符串“hello”的第一个字符。修改字符串“hello”是未定义的行为。此外,“hello”本身在本质上是常量。程序没有权限更改只读段。
我正在使用MS VC++ 2010 Express。我的问题是,为什么编译器允许s,它是一个char *,指向常量字符串?难道不应该有编译器错误吗?编译器不应该强制我们使用const char *s =“hello”;而不是char *s =“hello”;吗?
谢谢。