首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于typedef和struct的有关问题

2012-02-19 
关于typedef和struct的问题请问如下两个结构如何理解:typedefstructOLNode{inti,jElemTypeestructOLNode

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

热点排行