char *s = "hello";
Run Code Online (Sandbox Code Playgroud)
上面的代码在程序的只读部分分配了6个字节(我忘记了部分的名称)来存储字符串hello.然后,s初始化为指向字符串的第一个字符hello.修改字符串"hello"是未定义的行为.此外,"hello"它本身也是不变的.该程序无权更改只读部分.
我正在使用MS VC++ 2010 Express.我的问题是,为什么编译器允许s(哪一个char *)指向常量字符串?不应该有编译器错误?编译器不应该强迫我们使用const char *s = "hello";而不是char *s = "hello";?
谢谢.