函数指针作为函数参数 - 应该 const 它吗? [重复]

问题描述 投票:0回答:1

如果我写如下:

int f(char x, const int (*g) (const char x)) {
    return g(x);
}

第一个

const
是否有效地表达了我认为它所说的内容,即基本上程序员无法更改函数g的code?所以基本上,在传递函数指针作为参数时放置这些
const
是一个很好的做法吗?

c pointers constants function-parameter
1个回答
0
投票

第一个

const
声明返回的
int
是不可变的 - 但这并不重要,因为接收者会将其复制到非
const
int
(如果需要) - 这正是你的
f()
函数做。它调用
g()
,声明返回
const int
,但
f()
返回
int
。第一个
const
将被忽略。

这与更改

g()
的代码无关。在任何情况下都是不允许的。

如果你想明确的是函数指针不会指向内部的另一个函数

f
:

int f(char x, int (*const g) (const char x))
© www.soinside.com 2019 - 2024. All rights reserved.