我对指向函数的指针有点困惑。
比方说
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