浅谈struct

我们经常会看到声明结构体的两种形式,以Foo和Bar为例:

struct Foo
{
    ...
};

typedef struct Bar
{
    ...
}Bar;

这两个的区别在哪里呢?在于声明。

当我们要声明一个Foo型结构的变量f时,以下做法是错的:

Foo f;

正确的声明方法如下:

struct Foo f;
这是因为在c语言中,形如struct, enum和union一类,被称为tag identifiers . 所以身为struct的Foo就在tag namespace里,要声明类型为Foo的变量,需要加上tag identifiers也就是struct. 但要是一个程序中需要多次用到Foo这种结构类型,每次声明变量都这样,显然比较复杂,所以我们想到用typedef.

typedef struct Foo Foo;
Foo f;
这比之前简单不少,如果我们把第一句typedef和声明结合在一起,细心地读者就会发现,这不就是上面的Bar么?嘿嘿。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值