C++的 typedef 与 结构类型重命名 指针

问题:

typedef struct OLNode{
int i,j;
int e;
struct OLNode *right,*down;
}OLNode,*OLink;
这里的*OLink是什么意思?OLink a;这样定义的变量a算是什么,怎么回事?

 

解答:

 

定义完上面的Struct后,将这个定义命名为 OLNode,或者 *OLink,后者是一个指针。当你用这个定义a的时候,就是 OLink a,就是定义a为一个指向 stuct OLNode的指针。
明白了吧?这样写只是为了让写指针的时候少写个*而已。一般老程序员常常喜欢这么做。

 

这里typedef实现的是类型的重命名。
typedef:
struct OLNode{
int i,j;
int e;
struct OLNode *right,*down;
}OLNode,*OLink;


这一过程定义了一个OLNode结构体,并生成了一个OLNode对象 和 一个OLNode对象指针,


相当于如下过程:
struct OLNode{
int i,j;
int e;
struct OLNode *right,*down;
};

struct OLNode OLNode ;
struct OLNode *Link;


而使用了typedef后和上述过程基本没什么区别,只是把你自定的这种结构体数据类型进行了类型重命名,这样当你定义一个对象的时候可以使用:
OLNode a;这里a是一个对象!相当于 struct OLNode a;
而当你定义一个这种结构体对象指针时可以使用:
OLink a;这里a是一个对象指针,相当于 struct  OLNode *a;

使用tepedef好处是编程少些几个字母,编程中使用struct OLNode OLNode ; struct OLNode *Link; 虽然多写几个字母,但是很明确的知道你定义的变量是一个结构体。各有利弊

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值