整个数组初始化的正确语法

问题描述 投票:0回答:1

为什么以下内容是错误的,正确的语法是什么?

struct a {
    int b[4];
};

int c[4];
struct a a = {.b = &c};

a.b
不应该是
int *
int[]
类型,为什么是
int
类型?

(注意,

struct a
的声明不能更改。)

c syntax initializer anonymous-struct
1个回答
1
投票

您的评估是正确的:

b
应该具有类型
int *
int const *
,但您应该从初始值设定项中删除
&

struct a {
    int *b;
};

int c[4];
struct a a = { .b = c };

或等价:

struct a a = { c };
© www.soinside.com 2019 - 2024. All rights reserved.