c - 不同的格式来表示结构

标签 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;
}

请指出以上示例是否有任何错误

最后这个疑点和上面的例子完全不一样

如果我们不在单词 struct 后面放置一个结构标签,那么就这样做

(5)

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

main(){}

这个词“标签”是否仍然是结构标签,或者如果它在“}”之后那么它现在是一个结构名称?它是什么?如果它成为名称,我们为什么还要使用结构标签?

请仔细阅读我所有的疑惑并以良好的书面形式回答此问题

最佳答案

关于c - 不同的格式来表示结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856424/

相关文章:

c - ASCII 值内部如何工作?

c - 如何从c中的输入文件读取结构信息

php - PHP/MySQL 的 highcharts 的 Json 结构

c - 没有 OpenCV 的开源 PSNR/SSIM C 实现?

c - 结构指针运算符

c - 这个 switch case 语法是什么意思?

python - 理想线程结构题(涉及多线程通信)

c++ - 在C++中将一种结构类型分配给另一种类型

c - 读取二进制文件并将所有数据存储到结构数组中

C 程序仅在 Visual Studio 中的 Debug模式下,以编程方式更改 argv 在程序退出后会出现堆损坏错误。如何解决?