如果我写如下:
int f(char x, const int (*g) (const char x)) {
return g(x);
}
第一个
const
是否有效地表达了我认为它所说的内容,即基本上程序员无法更改函数g的code?所以基本上,在传递函数指针作为参数时放置这些 const
是一个很好的做法吗?
第一个
const
声明返回的 int
是不可变的 - 但这并不重要,因为接收者会将其复制到非 const
int
(如果需要) - 这正是你的 f()
函数做。它调用 g()
,声明返回 const int
,但 f()
返回 int
。第一个 const
将被忽略。
这与更改
g()
的代码无关。在任何情况下都是不允许的。
如果你想明确的是函数指针不会指向内部的另一个函数
f
:
int f(char x, int (*const g) (const char x))