结构体,结构体类型-c语言

struct Student是结构体类型名,Student是结构体名,为什么还要另外说结构体名?只说类型名不就行了吗?比如struct Student student1;
没有结构体名的又是怎么回事,struct{}student1?结构体和结构体类型有什么区别?

结构体类型是指定义的一种数据类型,它由一组具有相同特性的数据元素组成,比如struct Student,它由学号、姓名、性别等数据元素组成。而结构体名则是指定义的结构体类型的一个实例,比如Student student1,它是struct Student类型的一个实例,它的学号、姓名、性别等数据元素的值可以不同。struct{}student1是错误的写法,应该写成struct Student student1。结构体类型和结构体名的区别是,结构体类型是一种数据类型,而结构体名是一个实例,它的值可以不同。

c语言就是这么规定的,没有为什么
class为什么就不用在前面写上class,而直接省略了呢
当初就这么设计的,这就是语法
c语言允许你使用typedef给struct Student取个别名,设计c语言的人觉得这样就挺好

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7568254
  • 除此之外, 这篇博客: 学生成绩管理系统(C语言链表)中的 1.student类型定义 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    一个student变量代表一组学生信息

    typedef struct {
    	char name[NAME_LEN + 1];//姓名
    	int number;				//学号
    	int chinese;			//语文
    	int math;				//数学
    	int english;			//英语
    	int average;			//平均分
    	int sum;				//总分
    } student;					//用于存储单个学生的信息

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^