关于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语言中没有差别。

原文地址:https://www.cnblogs.com/jiudianren/p/5635780.html