c++ - C++数组中初始化列表的类型是什么?

标签 c++ c

这样的代码可以正常工作:

char str[] = {'a', 'b', '\0'};

左边是一个自动变量(数组)。

这样的代码不能工作:

char *str = {'a', 'b', '\0'};

左边是一个指针。指针指向未知空间,因此这将失败。

我的问题是,右侧的类型是什么?

在 C++ 11 中,初始化列表变为 std::initializer_list。但是旧的 C++ 03 呢?

最佳答案

在 C++03 中,大括号括起来的初始化器只是一种语法设备,可用于初始化聚合(例如数组或某些类型的类或结构)。它没有“类型”,只能用于那些特定类型的初始化器。

8.5.1/2 "Aggregates":

When an aggregate is initialized the initializer can contain an initializer-clause consisting of a brace- enclosed, comma-separated list of initializer-clauses for the members of the aggregate, written in increasing subscript or member order.

关于c++ - C++数组中初始化列表的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614728/

相关文章:

c++ - 如何知道分配给定内存块的是什么?

c++ - 如何更改 Amazon kinesis_video_gstreamer_sample_app.cpp 中的视频源?

c++ - 在 QT 中通过应用程序边框显示弹出窗口小部件

c - C 语言的分子质量计算器程序

c - 期待;在字符串声明的末尾

c++ - 进程是否在退出时自动清理 pthreads 占用的资源

c - 关于 C 整数类型和 printf() 说明符的奇怪问题

c++ - 在模板函数中可以使用已删除构造函数的 decltype

c++ - 如何从可执行文件的资源中提取48*48的图标图像?

c++ - 根据 if 条件选择 for 循环