Wei*_*ing 4 c++ pointers function-pointers
我是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;
}
Run Code Online (Sandbox Code Playgroud)
效果很好; 所以,我尝试了一点变化:
#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;
}
Run Code Online (Sandbox Code Playgroud)
我在Mac上用Xcode练习它,它给了我错误:
非法初始化程序(只能初始化变量)
但我觉得编译器可以认识到两者是一样的,为什么必须有一对括号?
在您的原始代码中
int (*minus)(int,int)=subtraction;
Run Code Online (Sandbox Code Playgroud)
声明minus为带参数并返回的函数指针.int, intint
在你的第二个代码中
int *minus(int,int)=subtraction;
Run Code Online (Sandbox Code Playgroud)
声明minus为接受参数并返回指针的函数.int, intint *
您可以使用函数名称(自动转换为函数指针)来初始化函数指针,但不能初始化函数.