C语言 我们是否需要添加 * 当类型定义与一个已经

dced5bon  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(83)

在编写这个C结构时:

typedef struct node_s* node_t;

struct node_s {
  int value;
  node_t next;
};

任何时候我们定义一个node_t类型的变量,我们不需要添加一个指针*
例如:

node_t f(node_t node) {
...
}

使得f接收一个节点并返回一个。

bmp9r5qi

bmp9r5qi1#

node_tstruct 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后面的指针性或结构性。

相关问题