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

将函数指针作为函数参数时是否需要添加const修饰?

问题解答

第一个const的实际含义

你对这个const的理解完全错了。代码里的const int (*g) (const char x),第一个const是修饰函数g的返回值,意思是调用g(x)后得到的返回值是const int类型——简单说就是你没法直接给这个返回值赋值(比如写g(x) = 5;会被编译器报错)。

它和“能不能修改函数g的代码”一点关系都没有:函数的代码存在程序的代码段中,正常情况下本来就没法通过函数指针去修改,这个const根本管不到这事儿。

这类const是否属于良好编程实践

要分情况判断:

  • 如果你的设计意图就是让函数g的返回值不允许被调用者修改,那加上这个const是很靠谱的做法——既能明确接口的语义,让其他开发者一眼就懂返回值的使用限制,还能让编译器帮忙拦截那些试图修改返回值的错误代码。
  • 如果函数g的返回值本来就是普通可修改的int(调用者拿到后可以随意赋值、参与计算),那加这个const就纯属多余,反而会限制代码的正常使用,完全没必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:45:56