c++中的字符串常量为什么可以赋值给char*?

比如可以写一下代码: char*str="hello"; 其中的"hello"不是const char*类型吗?为什么可以给char*赋值?
关注者
46
被浏览
55,584

11 个回答

C中"hello"类型是char[6],所以允许char* str="hello"; 你甚至可以接着使用 *str = "d" 这样赋值,编译通过没问题只不过会在运行时报错,因为"hello"位于只读存储区不允许写操作。

C++中"hello"的类型是const char[6],不过为了兼容C代码做了特殊处理,所以也允许赋值给char*指针。

一句话:为了兼容旧有的代码。