in C
- 使用typedef来定义一个结构体类型, 例如
typedef struct Student {
int a;
}Stu;
-
因为使用了typedef, 这里的Stu, 其实就是struct Student的别名, 于是声明变量的时候就可以Stu
student1; -
假如没有使用typedef, 那么声明变量的时候就需要struct Student student1;
- 另外, 也可以不写Student, 例如
typedef struct {
int a;
}Stu;
这样, 声明的时候必须是Stu student1;
in C++
- 可以直接定义结构体类型Student, 声明变量的时候就可以直接Student student1了, 例如
struct Student {
int a;
}
- 如果要使用typedef, 那么会有这样的区别
struct Student {
int a;
}Stu1; // Stu1是一个变量
typedef struct Student {
int a;
}Stu2; // Stu2是一个结构体类型
在使用时, 可以直接访问Stu1.a
但是, 使用Stu2时, 需要先声明一个变量, 然后再访问其成员, 例如
Student student;
student.a = 2017;
其实可以这么看, 在
typedef struct Student {
int a;
}Stu2;
中, 其实是做了两步工作的
- 首先定义了一个结构体, 就是中间的部分, Student就是一个标识符, 一个临时名字
- 其实typedef为这个结构起了一个新的名字, 叫Stu2, 所以就需要先声明一个变量, 然后再访问其成员变量