struct node
{
int coef;
int exp;
struct node *link;
};
typedef struct node *NODE;
回答
它使得NODE
是struct node *
的typedef。
什么是编写此代码的更好方法...保留相同的含义。 – Skr
更好的方法是省略typedef,并将指针类型称为“struct node *”。 –
它NODE
定义为类型struct node *
的代名词,所以当你将声明类型的变量NODE
你会实际上宣告指针struct node
。我个人并不认为这样的声明是一个好主意:你“隐藏了一个指针”(这几乎总是一个坏主意),而且,你也没有以任何方式强调这个事实变成新的名字。
+1因为相同的原因,“不要将指针类型隐藏在typedef后面” –
+1。命名它'nodeptr'而不是'node'会有所帮助,但是没有理由'typedef'。 –
“不要将指针类型隐藏在typedef后面”这是什么意思? – Skr
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;
将使NODE
别名struct 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
。
typedef struct node *NODE
表示什么?
它表明一个人如果没有学会大写没有好的
储备全部大写为宏标识符。
干杯&心连心,
另外,我不认为让'NODE'包含'*' –
@彼得李:谢谢,我没有想到提及这一点。嗯,我发现好奇的是,最有回报的答案是*不回答关于这个“表示”的问题,而这个答案是解决问题的唯一答案,它被低估了。这就是SO。 –
即使你非常坚实和酷。即使你有很好的案例提示。羞辱人是不是太好主意。 B.t.w.这个问题不是一个适当的答案。这是降低答案的主要原因。 – I159
简单地告诉你可以只使用节点的全部时间,而不是书面方式结构节点*每次创建节点类型的指针
- 1. C++:typedef struct {......} * node是什么意思?
- 2. 我们可以使用typedef struct node node;
- 3. “struct node * temp”和“struct node *&temp”之间的区别是什么?
- 4. struct node和struct node *之间的' - >'有什么区别?
- 5. struct node * head和struct node ** head有什么区别?
- 6. 对二进制表达式('struct node'和'struct node')的无效操作数
- 7. xsl代表什么? match =“@ * | node()”
- 8. “node-debug index.js”和“run node-inspector,then node --debug index.js”有什么区别?
- 9. node(){}是什么意思?
- 10. node --nocrankshaft做什么?
- 11. `node --harmony`做什么?
- 12. 什么是Node *&aNode?
- 13. typedef struct用于定义
- 14. typedef const struct * CGPath和typedef struct * CGPath有什么区别?
- 15. 'struct X typedef`与`typedef struct X`是什么意思?
- 16. `typedef struct X {}`和`typedef struct {} X`有什么区别?
- 17. 为什么说vp和pf在struct node中都没有声明?
- 18. 为什么STL中List的迭代器使用(* node).data而不是node-> data?
- 19. 为什么MouseEvent.toElement返回Node?
- 20. 什么是Drupal Panel Node Template
- 21. 什么是node-lru-cache?
- 22. “const Node&n”和“Node&n”有什么区别?
- 23. xpath中的// node和/ descendant :: node有什么区别?
- 24. Heroku,Node npm ERR! argv“/app/.heroku/node/bin/node”“/app/.heroku/node/bin/npm”“start”
- 25. 为什么指向List的指针也可以指向Node?
- 26. node-o3-canvas与node-canvas?
- 27. Drupal 5和node?destination = node
- 28. 比较kafka-node和node-rdkafka
- 29. 的typedef不妨碍关键字struct一个struct
- 30. typedef struct error:expected a';'
请不要隐藏真正的代码,但背后的typedef指针类型。 –
味道不好。 SCNR – ninjalj
什么是更好的方式来写这个代码。在书的结构中使用3到4种方式... – Skr