//函数指针
//定义
typedef int (*int_intIntFuncPnt)(int ,int);//int_intIntFuncPnt为返回值为int,形参为两个int的函数指针
typedef int int_intIntFunc(int,int);//int_intIntFunc为返回值为int,形参为两个int的函数
int sub(int a ,int b){
return a-b;
}
int funcPnt(int_intIntFuncPnt f){
cout<<"funcPnt(1,2)="<<f(1,2)<<endl;
return f(1,2);
}
int func(int_intIntFunc f){//同上,等效
cout<<"func(1,2)="<<f(1,2)<<endl;
return f(1,2);
}
int_intIntFuncPnt returnFuncPnt(){//函数指针作为返回值,
return sub;
}
/*
int_intIntFunc returnFunc(){//error,函数不可作为返回值
return sub;
}
*/
int (*fff(int a))(int ,int){//从函数名开始向外读
return sub;
}
int_intIntFuncPnt fff2(int a){//同上,等效
return sub;
}
void test_funcPointer(){
int_intIntFuncPnt f1=0;//未定义,不可用
int_intIntFuncPnt funcSub=sub;
int_intIntFuncPnt funcSub2=⊂//同上,等效
cout<<"funcSub(1,2)="<<funcSub(1,2)<<endl;
cout<<"funcSub2(1,2)="<<funcSub2(1,2)<<endl;
//cout<<"f1(1,2)="<<f1(1,2)<<endl;//运行时错误
int_intIntFunc f2;
funcPnt(sub);
func(sub);
int_intIntFuncPnt subFunc=returnFuncPnt();
cout<<"returnFuncPnt()(3,5)="<<returnFuncPnt()(3,5)<<endl;
}
函数指针
最新推荐文章于 2025-03-13 11:44:28 发布