You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

typedef重定义类型时是否需加*?C结构体指针类型使用疑问

关于C语言typedef和指针类型的问题解答

第一个问题:定义node_t类型变量时是否无需添加指针符号*?

是的,完全不用。因为你的代码里已经通过typedef struct node_s* node_t;把node_t定义成了指向struct node_s的指针类型,它本身就带指针属性。

比如你写的函数:

node_t f(node_t node) {
...
}

这里的参数node就是一个struct node_s*类型的指针,返回值也是同样的指针类型,不需要再加*。如果这时候画蛇添足加*,反而会变成指向指针的指针(struct node_s**),和预期不符。

第二个问题:使用已有类型进行typedef重定义时,是否需要添加*?

这取决于你想定义的新类型是什么:

  • 如果只是给原类型起一个别名(新类型和原类型完全一致),不需要加*。比如:
    typedef int my_int; // my_int就是int的别名
    
  • 如果想把新类型定义成原类型的指针类型,那就必须加*。比如你代码里的typedef struct node_s* node_t;,就是把node_t定义成struct node_s*的别名;再比如:
    typedef char* str_t; // str_t就是char*的别名
    

内容的提问来源于stack exchange,提问作者Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:55:02