C语言--typedef struct与struct定义结构体的区别

我在很多C语言代码中看到很多定义结构体时使用typedef struct,而不适用struct,就了解了这样做的原因:

typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。
具体区别在于:
(1)若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;
(2)若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;
区别就在于使用时,是否可以省去struct这个关键字。

=========================================================

定义结构变量的一般格式为:

struct 结构名
{
    类型 变量名;
    类型 变量名;
    ...
} 结构变量;

结构名是结构的标识符不是变量名。

另一种常用格式为:

typedef struct 结构名
{
    类型 变量名;
    类型 变量名;
    ...
} 结构别名;

===========================================================

分两块来讲述:
1 )首先:
在C中定义一个结构体类型要用typedef:

typedef struct Student
{
    int a;
}Stu;

于是在声明变量的时候就可:Stu stu1;如果没有typedef就必须用struct Student stu1;来声明,这里的Stu实际上就是struct Student的别名。
另外这里也可以不写Student(于是也不能struct Student stu1了)

typedef struct
{
    int a;
}Stu;

2)如果在c程序中我们写:

typedef struct
{
    int num;
    int age;
}aaa,bbb,ccc;

这算什么呢?我个人观察编译器(VC6)的理解,这相当于

typedef struct
{
    int num;
    int age;
}aaa;
typedef aaa bbb;
typedef aaa ccc;

也就是说aaa,bbb,ccc三者都是结构体类型。声明变量时用任何一个都可以,在c++中也是如此。但是你要注意的是这个在c++中如果写掉了typedef关键字,那么aaa,bbb,ccc将是截然不同的三个对象。

  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值