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

标签 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};
}

这让我收到以下警告:

warning: initialization of 'unsigned int' from 'unsigned int *' makes integer from pointer without a cast

但是使这个 A_ a = {{1,2,3,4}}; 没问题。为什么?

最佳答案

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

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

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

关于c - 使用先前声明的数组初始化结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57082904/

相关文章:

c - 输入数据后开关总是默认

python - 如何在 Python 中写入/打包二进制字符串到文件

c++ - Xcode 没有链接两个结构?

将 double 的 2 列 .txt 转换为 2 个数组并读取它们

c - 在不初始化的情况下使用 memset 或 strtok

c - CUDA 上的二维数组

javascript - 如何访问 map 内的下一个/上一个对象 - react ?

c++ - 为什么字符串数组会导致 LNK2001 错误?

arrays - Swift 异步完成以返回自定义类中的数组

c++ - 结构给出不正确的输出