c/c++语言开发共享typedef struct node * NODE表示什么?

struct node { int coef; int exp; struct node *link; }; typedef struct node *NODE; 

    它将NODE定义为类型struct node *的同义词,因此当您声明NODE类型的变量时,您实际上将声明一个指向struct node的指针。

    就个人而言,我认为这样的宣言不是一个好主意:你是“隐藏指针”(这几乎总是一个坏主意),而且,你并没有以任何方式突出这个事实进入新名称。

    它使NODE成为struct node *的typedef。

    NODE成为struct node*的别名。


    编辑:好的,评论(如果我把我的答案写成评论,它会太长而且没有格式化):

    写这个没有别的办法。 这里, typedef仅用于为指向 struct node 指针创建同义词/别名。
    使用示例如下:

     void f() { // some code NODE p = NULL; // do something with p // for example use malloc and so on // like: p = malloc( sizeof( struct node ) ); // and access like: p->coef = ..; p->expr = .. // do something with p and free the memory later (if malloc is used) } 

    是相同的

     void f() { // some code struct node* p = NULL; // do something with p } 

    使用NODE会使它变得更短(无论如何,我不会建议这样的typedef ,因为你正在隐藏它,它是一个指针 ,而不是struct或其他类型,如@Matteo Italia的回答中提到的)。


    您所指的格式:“typedef struct {} type_name format”是其他内容。 这是C的一种技巧,以避免编写struct关键字(因为它在C是强制性的,而在C++是非必需的)。 所以

     typedef struct node { //.. } NODE; 

    会为struct node创建NODE别名。 所以,与上面相同的例子:

     void f() { // some code NODE p; // do something with p // note that now p is automatically allocated, it's real struct // not a pointer. So you can access its members like: // p.coef or p.expr, etc. } 

    是相同的

     void f() { // some code struct node p; // do something with p } 

    注意,现在, p 不是指针,它是struct node

    只是告诉你每次只使用NODE创建节点类型的指针,而不是每次都写入struct node *

    typedef struct node *NODE表示什么?

    它表明一个人并没有学到这种情况并不好

    MACROS保留所有UPPERCASE标识符。

    干杯&hth。,

    需要了解更多c/c++开发分享typedef struct node * NODE表示什么?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享typedef struct node * NODE表示什么?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979108.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐