假设我有一个字符数组,这样就可以了:
char myChars[100] = "hello";
但是如果我有一个
const char* hello="hello";
char myChars[100] = hello;
或
const char hello[6]="hello";
char myChars[100] = hello;
这是不允许的:
error: array must be initialized with a brace-enclosed intializer
在我看来,这些基本上是等价的陈述,为什么会这样?
最佳答案
因为指针不是数组,数组也不是指针。
这些示例并不等同;字符串文字 "hello"
不是指针,而是一个 const char[6]
,可用于初始化您的 char myChars[100]
作为特殊情况。
但是,如果您首先将其衰减为指针,则稍后将无法再次恢复该数组性。在一般情况下,编译器无法知道数组有多大,甚至无法知道它是一个数组。因此,无论之前发生了什么,从指针初始化数组都是无效的。
关于c++ - C/C++ 将 char 数组初始化为 const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42356078/