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

将每个成员初始化为空的C字符串,c,string,struct,initialization,C,String,Struct,Initialization,指令要求我声明一个类型为Name的变量,用于存储联系人的全名,但如何将每个成员初始化为空的C字符串 键入Name头文件: struct Name { char firstName[31]; char middleInitial[7]; char lastName[36]; }; 我的尝试:struct Name myname={{0} 我做得对吗?struct Name myname={{0}已关闭 警告:“结构名称”[-Wmissing字段初始值设定项]的字段“mid

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

键入
Name
头文件:

struct Name {
    char firstName[31];
    char middleInitial[7];
    char lastName[36];
};
我的尝试:
struct Name myname={{0}


我做得对吗?

struct Name myname={{0}已关闭

警告:“结构名称”[-Wmissing字段初始值设定项]的字段“middleInitial”缺少初始值设定项

{0}
就足够了


备选方案如下所列。这取决于你想要表达的程度

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"
}
struct Name myname;
int main(){
printf(“\n”,myname.firstName);//打印“\n”
}

struct Name myname={0};就够了。