在C struct中初始化值

时间:2012-09-23 18:01:48

标签: c arrays struct

我是C的新手,我想知道是否允许这样做,如果是这样,我该如何正确地做到这一点?

这段代码给了我很多编译器错误。我正在尝试创建一个包含3个字符数组的结构(初始化为空字符'\0')并初始化其中一个名为S的结构。

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

3 个答案:

答案 0 :(得分:3)

没有。这是不允许的。

C中的类型(您的struct Structure是一种类型)没有任何价值。什么是值是对象。

您可以创建一个strutsure类型的对象,并在需要时递归地将其全部初始化为0,并将其称为通用零初始化器

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

答案 1 :(得分:2)

没有

有两件事:

  1. 声明struct的结构 - 它的构成部分。
  2. 定义此结构的特定实例。这样做时,您还可以初始化部分或全部字段。
  3. 您的代码仅声明布局,而不创建实际实例。所以它无法初始化。

答案 2 :(得分:1)

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

struct Structure{
    char array1[3] ;
    char array2[30];
    char array3[30];
} S;