原来一直认为结构体定义只有struct开头的方法。今天看一本书突然看到typedef struct开头的结构体定义方式吧自己搞的一脸懵逼。既然如此那就看看吧!!
先来看看C语言中的结构体变量的三种方法:
1、先定义结构体类型,再定义变量
注:注意在C语言中定义结构体变量的时候是struct student打头的。
struct student{
int num;
char name[20];
char sex;
int age;
};
struct student stu1,stu2;
2、结构体类型和结构体变量同时定义
struct student{
int num;
char name[20];
char sex;
int age;
}stu1,stu2;
3、直接定义结构体类型变量(这个以前还真没留意)
struct
{
int num;
char name[20];
char sex;
int age;
}stu1,stu2;
其实上面第一种方法我个人用的最多。
但是,每一次定义变量的时候都要写struct感觉怪怪的。C语言提供了一种简便些的方式——typedef。
typedef struct student{
int num;
char name[20];
char sex;
int age;
}Stu;
Stu stu1,stu2;
也就是说:对C语言来说上述的使用typedef定义结构体的方式中Stu相当于struct student的一个别名。即Stu=struct student。
C++语言中的结构体变量:
在C++中一切都是最简捷的方式(果然是语言的进步呀!!):
struct student{
int num;
char name[20];
char sex;
int age;
};
student stu1,stu2;
但是,如果我也加上typedef会怎么样呢?答案如下:
struct student{
int num;
char name[20];
char sex;
int age;
}stu1; //stu1是一个结构体变量
typedef struct student{
int num;
char name[20];
char sex;
int age;
}stu2; //stu2是一个结构体类型=struct student
结论:在C++中定义结构体的时候不要整什么typedef。此处说明是为了避免以后看到这样的代码不知所措。