`

函数指针

    博客分类:
  • C++
阅读更多
//函数指针

//定义
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=&sub;//同上,等效
	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;
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics