【发布时间】:2017-10-27 14:50:17
【问题描述】:
使用 Visual Studio,我声明了一个 char * 类型的指针,并为其分配了一个字符串文字。然后我将鼠标悬停在字符串文字上,它显示了它的类型:(const char [4])"abc"。
这是怎么允许的?它编译时没有警告或错误,同时为指针分配const char [] 类型的数组失败,原因很明显,并显示错误消息:
“const char *”类型的值不能分配给“char *”类型的实体
那么,为什么允许字符串字面量?
int main(void)
{
char *p = "abc"; // no error here
const char str[] = "abc";
//p = str; This line generates an error
return 0;
}
【问题讨论】:
-
错误信息的哪一点你不明白?
const char *与char *不同。 -
并将其分配给字符串文字。不,您已分配给它。
-
您没有将指向 char 的指针分配给字符串文字。
-
您使用的是哪个版本的 Visual Studio?
-
@NeilButterworth OP 询问为什么 VS 编译该代码没有引发警告或错误
标签: c++ string pointers compiler-errors