当我用指向函数的指针做某事时,我注意到了一些东西但不明白
我这样做了:
#include <stdio.h>
int callback(void)
{
return 5;
}
void call(int (*cpmpare)(void))
{
int x;
x = cpmpare();
printf("%d", x);
}
void main()
{
int (*compare)(void);
int *a, b;
b = 5;
a = &b;
compare = callback;
printf("%p\n", &callback);
printf("%p\n", compare);
call(&callback);
}
我用 compare = &callback
代替了 compare = callback
并且它做了同样的事情,compare 得到了与 callback 相同的地址。
为什么它是双向的?
据我所知,比较指针和常规变量是错误的。
最佳答案
函数,如数组,在某些情况下会退化为指针。使用&function
或function
几乎总是一样的。在您的示例中,情况确实如此。这两个语句在语义上是相同的:
compare = callback;
compare = &callback;
这两个也是:
call(&callback);
call(callback);
同样,当你想使用函数指针时,*
也是可选的:
x = cpmpare();
x = (*cpmpare)();
关于c++ - C++中指向函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16777141/