【发布时间】:2016-08-19 19:09:57
【问题描述】:
返回const char * 的函数不能分配给char*
const char* func() {
return "This is a const string two ";
}
但是 char* 直接在 main 中分配了一个常量字符串:
int main() {
char *d =" this is a const string one"; // works fine
char *e = func(); // error cannot convert from 'const char *' to 'char *'
return 1;
}
为什么会有矛盾?
【问题讨论】:
-
字符串文字是特殊的。特别是,它不是
const char*。 -
这是 C 还是 C++?两种不同语言中的字符串文字略有不同。
-
这确实是自 c++11 以来稍微纠正的不一致行为,在这种情况下,您将收到第一次分配的警告
-
请删除 C 或 C++ 标签。答案会因语言而异。
-
ISO C++11 不允许从字符串文字转换为
char*,因此您的“工作正常”充其量只是情景。