将每个成员初始化为空的C字符串

时间:2019-03-09 15:36:04

标签: c string struct initialization

指令要我声明一个Name类型的变量以用于存储联系人的全名,但是如何将每个成员准确地初始化为空的C字符串?

类型Name头文件:

struct Name {
    char firstName[31];
    char middleInitial[7];
    char lastName[36];
};

我的尝试:struct Name myname = { {0} };

我做对了吗?

1 个答案:

答案 0 :(得分:3)

struct Name myname = { {0}};已经关闭

  

警告:“结构名称” [-Wmissing-field-initializers]的字段“ middleInitial”缺少初始化程序

{0}就足够了。 @machine_1


下面列出的替代方法。这取决于您想要表现什么。

struct Name {
  char firstName[31];
  char middleInitial[7];
  char lastName[36];
};

// struct Name myname = { {0}};
struct Name myname1 = {0};
struct Name myname2 = { {0}, {0}, {0}};
struct Name myname3 = { "", "", "" };
struct Name myname4 = { .firstName = "", . middleInitial = "", .lastName = "" };
struct Name myname5 = { .firstName = "" };
struct Name myname6 = { { [0] = 0 }, "", {0}};
// many others

在C语言中,对象的 all 全部被初始化,或者都不初始化,没有部分初始化。

当初始化未完成时,其余部分将填充一些东西,通常为零。适用于其他问题的详细信息。


注意:如果struct Name myname位于全局空间或static中,则即使没有显式的初始化程序,它也会收到默认的“零”初始化。

struct Name myname;
int main() {
  printf("<%s>\n", myname.firstName); // prints "<>\n"
}