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