指向C中带有取消引用运算符(*)的函数的指针



我对指向函数的指针有点困惑。

比方说

int func (int parameter){
return parameter + 5;
}
int (* pfunction)(int) = func;
pfunction(5); //this will return 10

但我想知道,如果没有偏执狂,它意味着什么。就像这样。

pfunction
*pfunction

我知道在指针指向int、float、double的情况下这两者之间的区别。。。但当涉及到指向函数的指针时,我不知道这两个是什么意思。

你能解释一下吗?

pfunction表示函数指针,它保存对函数的引用

*pfunction取消引用的函数指针将为函数提供相同的引用

pfunction指针的&pfunction地址

当调用函数指针时,两种形式都是正确的:pfunction(5) and (*pfunction)(5)

示例:

int  func (int parameter){
return parameter + 5;
}
int main(void)
{
int (*pfunction)(int) = func;
printf("%dn", pfunction(5)); //this will return 10
printf("%dn", (*pfunction)(5)); //this will return 10
printf("pfunction t%pn", (void *)pfunction);
printf("*pfunction t%pn", (void *)*pfunction);
printf("&pfunction t%pn", (void *)&pfunction);
printf("%pn", (void *)func);
printf("%pn", (void *)main);
}

https://godbolt.org/z/7eq581

最新更新