【问题标题】:Initialize each member to an empty C string将每个成员初始化为一个空的 C 字符串
【发布时间】:2019-07-31 09:56:47
【问题描述】:

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

输入Name头文件:

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

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

我做对了吗?

【问题讨论】:

  • 结构名称 myname = { 0 };就足够了。

标签: c string struct initialization


【解决方案1】:

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

警告:'struct Name' [-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 中,要么所有对象被初始化,要么不初始化,不进行部分初始化。

当初始化不完整时,剩下的就是填充一些东西,通常是零位。适合其他问题的详细信息。


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    相关资源
    最近更新 更多