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

时间:2019-07-17 19:26:23

标签: c arrays struct initialization initializer-list

我有以下情况:

typedef struct A {
    unsigned int a[4];
} A_;

int main() {
    unsigned int b[4] = {1,2,3,4};
    A_ a = {b};
}

这使我收到以下警告:

  

警告:从'unsigned int *'中初始化'unsigned int'使   指针的整数,无强制转换

但是将此设为A_ a = {{1,2,3,4}};是可以的。为什么?

1 个答案:

答案 0 :(得分:1)

除了用字符串文字初始化数组外,标准C没有提供任何机制来使用数组初始化结构成员。

相反,您可以使用结构初始化结构。假设编写代码时知道要使用的值,则后一种结构也可以设为static const

int main(void)
{
    static const A_ InitialStructure = {{ 1, 2, 3, 4 }};
    A_ a = InitialStructure;
}