繁体   English   中英

有人可以解释一下这个 C 结构语法吗?

[英]Can someone explain me this C structure syntax?

我在这个官方 gnu gcc 网站上发现他们初始化了这样的结构:

struct f1 {
  int x; int y[];
} f1 = { 1, { 2, 3, 4 } };

struct f2 {
  struct f1 f1; int data[3];
} f2 = { { 1 }, { 2, 3, 4 } };

起初我认为这是结构的默认初始化,但我对其进行了测试,并且在声明时它不会自动初始化结构,所以使用它有什么意义(我当然用 gcc 编译了我的程序)。

我试过的代码:

#include <stdio.h>

struct a{
int x;
int y;
} a = {42, 42};

int main(void)
{
  struct a foo;

  printf("%d\n%d\n", foo.x, foo.y);
  return (0);
}

它输出随机未初始化的数据而不是

42
42

您的困惑似乎源于您不了解语法这一事实。

struct f1 {
  int x; int y[];
} f1 = { 1, { 2, 3, 4 } };

定义了一个名为f1变量,并初始化了它的成员。

在您的示例中,您还在全局 scope 中初始化了一个变量a ,但在main scope 中也有相同的变量a ,该变量未初始化。

我误解了,这相当于struct f1 f1 = { 1, {2, 3, 4}}; ,他们使用同名f1的事实让我觉得这是一种新语法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM