Twi*_*ard 2 c++ arrays pointers
为什么这有效:
char foo[6] = "shock";`
Run Code Online (Sandbox Code Playgroud)
虽然这不起作用:
char* bar = "shock"; //error
Run Code Online (Sandbox Code Playgroud)
为什么bar必须是const而foo不是?fooC 中的数组衰减为指针,因此技术上和不bar具有相同的类型吗?
有了这个声明:
char foo[6] = "shock";
Run Code Online (Sandbox Code Playgroud)
变量foo是char 类型的数组,它包含 6 个非常量字符。字符串文字包含常量字符,这些字符在初始化时复制到数组中。
有了这个声明:
char* bar = "shock"; //error
Run Code Online (Sandbox Code Playgroud)
变量bar是指向 char 的类型指针。您试图使其指向"shock"包含 的字符串文字的地址const char。
您不能将指针指向const char处的非 const char 。
所以你必须这样做:
const char* bar = "shock";`
Run Code Online (Sandbox Code Playgroud)