我是一个C++的新手,最近在学习函数指针,对于函数指针的使用还有些困惑;
我练习了以下代码:
#include <iostream>
#include <sstream>
using namespace std;
int subtraction(int a,int b){
return a-b;
}
int main(int argc, const char * argv[])
{
int (*minus)(int,int)=subtraction;
cout<<minus(5,4);
return 0;
}
它很好用;因此,我尝试了一点变化:
#include <iostream>
#include <sstream>
using namespace std;
int subtraction(int a,int b){
return a-b;
}
int main(int argc, const char * argv[])
{
int *minus(int,int)=subtraction;//only here different!
cout<<minus(5,4);
return 0;
}
我在Mac上的Xcode中练习它,结果出现了错误:
非法初始化程序(只有变量可以被初始化)
但是我认为编译器可以识别这两个是相同的,为什么一定要有一对括号呢?
int* minus(int,int)=subtraction;
不起作用。 - David Schwartz