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

liu*_*rry 8 c c++

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

char str[] = {'a', 'b', '\0'};
Run Code Online (Sandbox Code Playgroud)

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

这样的代码可以工作:

char *str = {'a', 'b', '\0'};
Run Code Online (Sandbox Code Playgroud)

左侧是指针.指针指向未知空间,因此这将失败.

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

在C++ 11中,初始化列表变为std::initializer_list.但是旧的C++ 03怎么样?

Mic*_*urr 8

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

8.5.1/2"聚合":

初始化聚合时,初始化程序可以包含一个initializer子句,该子句由一个括号括起来的逗号分隔的聚合成员初始化子句列表组成,以增加的下标或成员顺序编写.