在编写这个C结构时:
typedef struct node_s* node_t; struct node_s { int value; node_t next; };
任何时候我们定义一个node_t类型的变量,我们不需要添加一个指针*?例如:
node_t
*
node_t f(node_t node) { ... }
使得f接收一个节点并返回一个。
f
bmp9r5qi1#
node_t是struct node_s *的别名,因此
struct node_s *
node_t p;
完全等同于
struct node_s *p;
和/或
node_t f( node_t node )
struct node_s *f( struct node_s *node )
话虽如此...在typedef后面隐藏指针通常不是一个好主意,除非你还提供了一个API来向用户隐藏类型的“指针性”。如果你的类型的用户必须显式地取消引用它或访问一个成员才能正确地使用它,那么 * 不要 * 隐藏typedef后面的指针性或结构性。
1条答案
按热度按时间bmp9r5qi1#
node_t
是struct node_s *
的别名,因此完全等同于
和/或
完全等同于
话虽如此...
在typedef后面隐藏指针通常不是一个好主意,除非你还提供了一个API来向用户隐藏类型的“指针性”。
如果你的类型的用户必须显式地取消引用它或访问一个成员才能正确地使用它,那么 * 不要 * 隐藏typedef后面的指针性或结构性。