读书人

关于typedef和struct的有关问题

发布时间: 2012-02-19 19:43:38 作者: rapoo

关于typedef和struct的问题
请问如下两个结构如何理解:

typedef struct OLNode {
int i,j;
ElemType e;
struct OLNode *right, *down;
}OLNode; *OLink; //注意,这一行有两个分号

typedef struct {
OLink *rhead, *chead;
int mu,nu,tu;
}CrossList;

这是数据结构关于 "十字链表 "中的定义两个结构,我看不大明白,请问其中哪些是类型名,哪些是变量名?


[解决办法]
====================================
typedef struct OLNode {
int i,j;
ElemType e;
struct OLNode *right, *down;
}OLNode; *OLink; //注意,这一行有两个分号 //真的是分号?
=======================================

在C语言中,要定义一个struct对象,需要这样写:
struct OLNode o_1; //定义一个OLNode对象o_1,不能省略struct关键字
这种写法很烦人,所以就有人想到了这样定义
typedef struct OLNode OLNODE; //类型别名
typedef struct OLNode* OLink; //指针类型别名
需要定义新对象时只要OLNODE o_2;或者指针类型OLink p_o;

而这种写法和上面的效果一样:
typedef struct OLNode {
int i,j;
ElemType e;
struct OLNode *right, *down;
}OLNode,*OLink; //中间是逗号
同样:
typedef struct {
OLink *rhead, *chead;
int mu,nu,tu;
}CrossList; //也定义了一个叫CrossList的类型别名

在C++里面已经没有这种问题了
struct A
{
....;
}

A a;//不需要struct A a;了

读书人网 >C语言

热点推荐