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

    技术2022-05-19  22

    问题:

    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; 虽然多写几个字母,但是很明确的知道你定义的变量是一个结构体。各有利弊


    最新回复(0)