关于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;了