关于struct和typedef struct
以
1 struct TelPhone{ 2 3 char Name[20]; 4 5 char TeiNumber[20]; 6 };
为例 这里先定义了一个 TelPhone的结构体。
加入需要为TelPhone定义一个别名:
其语法为
typedef TelPhone TP;
而实际上TelPhone为一个结构体,
这样写比较好
tepedef struck TelPhone TP;
因为我们的TelPhone是我们自定义的类型,所以我们了解,但是别人不一定会了解,如果我们再加上struck这个关键字,别人就会知道这是一个自定义的类型,也不会造成费解。
所以最终演化成了
如下写法
typedef struct TelPhone{ char Name[20]; char TelNumber[20]; }TP;
此时,我们可以定义
可以
struct TelPhone tp1;
也可以,直接
TP tp2;
如果我们不需要struct TelPhone,也可以直接
typedef struct { char Name[20]; char TelNumber[20]; }TP;
这样只能通过TP来定义结构体了。
在c++中的区别
如果我们定义了
1 struct TelPhone{ 2 char Name[20]; 3 char TeiNumber[20]; 4 };
那么可以直接视同TelPhone来定义结构体变量
TelPhone tp1;
c++中
struct Student { int a; }stu1;//stu1是一个变量
stu1就表示一个Student类型的结构体变量
而:
typedef struct Student2 { int a; }stu2;//stu2是一个结构体类型=struct Student
和c语言中没有差别。