我对C很陌生,我想知道这是否允许,如果允许,我该如何正确地做到这一点?
这段代码给了我大量的编译器错误。我正在尝试创建一个具有 3 个字符数组(初始化为空字符'\0'
)的结构,并使用名称初始化这些结构之一S
。
struct Structure{
char array1[3] = { '\0' };
char array2[30]= { '\0' };
char array3[30]= { '\0' };
} S;
不,这是不允许的。
C 中的类型(你struct Structure
是一个类型)没有价值。具有价值的是对象。
您可以创建一个结构类型的对象,并使用我所说的通用零初始化器将其全部初始化为 0,如果需要,可以递归地初始化。
struct Structure {
char array1[3];
char array2[30];
char array3[30];
} S = {0};
不。
有两个不同的东西:
struct
- 它由哪些部分组成。您的代码仅声明布局,并没有创建实际实例。所以无法初始化。
你不能初始化结构元素中的值。正确的初始化是这样的——
struct Structure s = {0};
正确的声明是
struct Structure{
char array1[3] ;
char array2[30];
char array3[30];
} S;