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

问题描述 投票:1回答:1

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

键入Name头文件:

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

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

我做得对吗?

c string struct initialization
1个回答
3
投票

struct Name myname = { {0}};很近

警告:缺少'struct Name'字段'middleInitial'的初始值设定项[-Wmissing-field-initializers]

{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中,要么初始化所有对象,要么不对其进行初始化,不进行部分初始化。

当初始化不完整时,其余部分会填充一些东西,通常是零位。适用于其他问题的详细信息


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

struct Name myname;
int main() {
  printf("<%s>\n", myname.firstName); // prints "<>\n"
}
© www.soinside.com 2019 - 2024. All rights reserved.