表示结构的不同格式

时间:2014-07-21 01:04:26

标签: c structure

我在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;
}

请提及上述任何示例中的任何一个是否有任何错误

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

如果我们不在结构一词之后放置一个结构标签并且这样做

(5)

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

main(){}

这个词是'标记'仍然是结构标签或者如果它后面是'}'那它的结构名称呢?它是什么?如果它成为名称,为什么我们仍然使用结构标签?

请仔细阅读所有疑问并以精心编写的格式回复此问题