如何在 C 中初始化结构
How do I initialize a struct in C
我收到一条关于我如何在 C 中初始化我的结构的评论,说它不起作用,也无法编译。
这就是我在 C 中创建和初始化结构的方式。
struct {
int a;
int b;
char arr[3];
.
.
.
} data = {
.a = 1,
.b = 2
};
main(){
/* do stuff */
}
这是我初始化结构的方式,它可以工作和编译。然而我收到一条评论说这会为 C++ 编译但不能为 C 编译。有人可以确保我这是正确的选择吗?如果不是为什么编译没有错误?
我认为数据成员的声明有错别字arr
。而不是
char [3]arr;
你必须写
char arr[3];
您不能用空括号初始化数组。所以写成例如
struct {
int a;
char arr[3];
.
.
.
} data = {
.a = 1,
.arr = { 0 }
};
其实写就够了
struct {
int a;
char arr[3];
.
.
.
} data = {
.a = 1
};
数组将隐式初始化为零。
我收到一条关于我如何在 C 中初始化我的结构的评论,说它不起作用,也无法编译。
这就是我在 C 中创建和初始化结构的方式。
struct {
int a;
int b;
char arr[3];
.
.
.
} data = {
.a = 1,
.b = 2
};
main(){
/* do stuff */
}
这是我初始化结构的方式,它可以工作和编译。然而我收到一条评论说这会为 C++ 编译但不能为 C 编译。有人可以确保我这是正确的选择吗?如果不是为什么编译没有错误?
我认为数据成员的声明有错别字arr
。而不是
char [3]arr;
你必须写
char arr[3];
您不能用空括号初始化数组。所以写成例如
struct {
int a;
char arr[3];
.
.
.
} data = {
.a = 1,
.arr = { 0 }
};
其实写就够了
struct {
int a;
char arr[3];
.
.
.
} data = {
.a = 1
};
数组将隐式初始化为零。