这个问题我在网上没看到很清楚的回答,w3cschool里也没讲清楚,所以就整理了一下自己的理解,回答了一个百度知道的提问。贴上链接:https://zhidao.baidu.com/question/557784323.html?hideOtherAnswer=true&newAnswer=1)
把答案附如下,如有问题请指教
// 情况一:student作为结构体的标识符 常规操作
struct student{
char name[20];
int num;float math,yuwen,wuli,mean;
};
struct student st1, st2, st3;
/**********************分割线*************************/
// 情况二:和上面同样的情况,不过我在定义结构体的时候顺便把st1 st2 st3给声明了。
// 这里后面跟的结构变量st1 st2 st3就是新声明的三个student的实例而已。
struct student{
char name[20];int num;
float math,yuwen,wuli,mean;
} st1, st2, st3;
/**********************分割线*************************/
// 情况三:下面这两个例子用了typedef关键字。简单来说,后面的“st”可以代
// 替"struct student"来进行声明。所以下面两种情况自然是等价的。
// 实际上这里后面跟的并不是“结构变量”,这就是typedef的使用格式罢了,
// 所以虽然看起来很像,实际上和上面的情况没什么关系。
typedef struct student{
char name[20];int num;
float math,yuwen,wuli,mean;
} st;
struct student st1, st2, st3;
/**********************分割线*************************/
typedef struct student{
char name[20];int num;
float math,yuwen,wuli,mean;
} st;
st st1, st2, st3;
另外可参考:
https://zhidao.baidu.com/question/543939532.html
https://blog.csdn.net/minyangchina/article/details/4492575