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

为何C语言中部分函数声明的名称前带有*?以addentry函数为例

函数名称前的*含义解释

在代码 struct entry *addentry (struct entry *listPtr, int value){ } 中,函数名addentry前的*表示该函数的返回值是一个指向struct entry类型结构体的指针。

具体说明:

  • 若去掉这个*,函数返回的是struct entry结构体本身,会返回整个结构体的副本;
  • 加上*后,函数返回的是该结构体在内存中的地址(指针)。这种写法在链表、树这类需要操作内存地址的数据结构中极为常见——比如你代码里的参数listPtr就是链表头指针,返回新节点或更新后的链表头指针,能更高效地操作数据,避免拷贝整个结构体带来的内存开销。

注意区分函数指针写法:如果是struct entry (*addentry)(...)这种带括号的形式,才表示addentry是一个指向函数的指针。你的代码里因为函数调用()优先级高于*,所以会先解析addentry(...)是函数,再确定它的返回值为结构体指针。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:20:19