2

我对C很陌生,我想知道这是否允许,如果允许,我该如何正确地做到这一点?

这段代码给了我大量的编译器错误。我正在尝试创建一个具有 3 个字符数组(初始化为空字符'\0')的结构,并使用名称初始化这些结构之一S

struct Structure{
    char array1[3] = { '\0' };
    char array2[30]= { '\0' };
    char array3[30]= { '\0' };
} S;
4

3 回答 3

3

不,这是不允许的。

C 中的类型(你struct Structure是一个类型)没有价值。具有价值的是对象。

您可以创建一个结构类型的对象,并使用我所说的通用零初始化器将其全部初始化为 0,如果需要,可以递归地初始化

struct Structure {
    char array1[3];
    char array2[30];
    char array3[30];
} S = {0};
于 2012-09-23T18:08:52.587 回答
2

不。

有两个不同的东西:

  1. 声明结构struct- 它由哪些部分组成。
  2. 定义此结构的特定实例。这样做时,您还可以初始化部分或全部字段。

您的代码仅声明布局,并没有创建实际实例。所以无法初始化。

于 2012-09-23T18:08:11.450 回答
1

你不能初始化结构元素中的值。正确的初始化是这样的——
struct Structure s = {0};
正确的声明是

struct Structure{
    char array1[3] ;
    char array2[30];
    char array3[30];
} S;
于 2012-09-23T18:11:09.123 回答