【问题标题】:different formats to represent the structures表示结构的不同格式
【发布时间】:2014-07-21 01:04:25
【问题描述】:

我在 youtube 上看过不同人的视频,现在我有点困惑

前两个[(1) (2)] 是没有 typedef 的相同类型,然后是两个[(3) (4)] 与 typedef 属于同一类型,但写法不同

请说明以下表示的结构是否有错误以及为什么用数字表示。我正在为所有这些格式分配编号

(1)

struct tag{
    int number;
    char *name; 
    float num;
};

main()
{
    struct tag name;
    name firstmember;

    ------code-------
    return 0;
}

我看到的下一个类型和上面的一样,但是:

(2)

struct tag{
    int number;
    char *name; 
    float num;
}name;

main()
{
    name firstmember;

    ------code-------
    return 0;
}

接下来是使用带有 typedef 的结构:

(3)

typedef struct tag{
    int number;
    char *name; 
    float num;
}name;

main()
{
    name firstmember;

    ------code-------
    return 0;
}

typedef 与其他版本相同:

(4)

struct tag{
    int number;
    char *name; 
    float num;
};

main()
{
    typedef struct tag name;

    name firstmember;

    ------code-------
    return 0;
}

如果上述任何示例有任何错误,请说明

最后这个疑问和上面的例子完全不同

如果我们不在 struct 后面加一个结构标签,然后这样做

(5)

struct {
    int number;
    char *name; 
    float num;
}tag;

main(){}

这个词'tag'是否仍然是结构标记,或者如果它在'}'之后,所以它现在是一个结构名称?它是什么?如果它变成了名字,为什么我们还要使用结构标签?

请仔细阅读我所有的疑问后回答这个问题

【问题讨论】:

  • tag 是#5 中结构的一个实例。我不知道你为什么一直使用 name 就像它是前两个中的一种类型。
  • @chris 'tag' 是什么意思是结构的一个实例。上面写的其他结构格式都正确吗?
  • @chris 这个词“标签”现在仍然是其结构名称的结构吗?这就是我的困惑
  • 它是一个对象。就像int i; 中的i 是一个对象一样。只有#3 有效。 #4 在typedef 中的tag 之前缺少struct
  • (5) tag 表示变量名。结构体没有标签时,无法创建其他对象。

标签: c structure


【解决方案1】:

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • @XN16 我部分同意您的评论,因为这对于外部链接完全正确,但是如果您检查它们,您会发现它们都是 Stack Overflow。我不认为那些高票数的页面会消失,如果是这样,那还有什么意义?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多