- 结果
foo: 0x4006e1
f: 1
foo: 0x4006e1
f: 2
wtf: 0x4006e1
f: 3
wtf: 0x4006e1
f: 4
所以函数的前面加不加&和*都一样吗?WTF
#include <iostream>
using namespace std;
void foo(int i, void(f)(int)){
printf("foo: %p\n", f);
f(i);
}
void wtf(int i, void(*f)(int)){
printf("wtf: %p\n", f);
f(i);
}
void f(int i){
printf("f: %d\n", i);
}
int main(int argc, char* argv[]){
foo(1, f);
foo(2, &f);
wtf(3, f);
wtf(4, &f);
return 0;
}