用于初始化数组的 c++ 语法

Posted

技术标签:

【中文标题】用于初始化数组的 c++ 语法【英文标题】:c++ syntax for initializing arrays 【发布时间】:2015-10-25 23:38:46 【问题描述】:

我遇到了这个代码片段,它用 g++ 编译得很好。我能理解发生了什么,但这是有效的 c++ 还是扩展?

const char* msgs[] = 

    [0] = "message0",
    [1] = "message1"
;

【问题讨论】:

这是完全合法的,并且在特定索引而不是整个数组初始化非常有用 【参考方案1】:

这是有效的 C 语法。在 C 中,您可以使用所谓的 designators。

designator:
    [ constant-expression ]
    . identifier

再举一个例子

struct A

   int x;
   int y;
 a =  .x = 10, .y = 20 ;

但它在 C++ 中无效。在 C++ 中你应该写

const char* msgs[] = 

    "message0",
    "message1"
;

如果 C++ 编译器编译您显示的声明,那么它是它自己的语言扩展,不符合 C++。

【讨论】:

以上是关于用于初始化数组的 c++ 语法的主要内容,如果未能解决你的问题,请参考以下文章

C++ 如何将一个静态结构体数组初始化?

带有数组的 C++ 构造函数初始化列表

c++数组初始化与删除用法大全

PHP 数组遍历 foreach 语法结构

在 C++ 中的类构造函数中初始化结构数组

java基础语法学习day06---初学者必看详解