c++ - C/C++ 将 char 数组初始化为 const char*

标签 c++ arrays initialization

假设我有一个字符数组,这样就可以了:

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/

相关文章:

c++ - 解决 C++ 'target of assignment not really an lvalue' 错误

c++ - 月球相对于太阳的轨道

arrays - 赋值左侧的函数调用必须返回 Variant 或 Object,在两个数组中查找公共(public)值

c++ - 3种类型的初始化

c++ - 由于 vector 初始化(如数组)导致 C1001 内部编译器错误

c++ - 为 Mac 构建闹钟应用程序

c++ - 设计一个 C++ asio 流媒体服务器

PHP 拆分字符串并插入 MySQL

php - CodeIgniter - 从数组中获取下一条记录

c - 使用先前声明的数组初始化结构