C++ pass function and arguments as parameter via function address * symbol
#include <iostream> #include <functional> using namespace std; int sum41(int x,int y); int multiply42(int x,int y); int passFuncAddress43(int x,int y,int(*func)(int ,int)); void callFuncAddress44(int x,int y); int main(int args, char **argv) { callFuncAddress44(atoi(argv[1]), atoi(argv[2])); } void callFuncAddress44(int x,int y) { cout<<"Sum of x and y is "<<passFuncAddress43(x,y,&sum41)<<endl; cout<<"Prod of x and y is "<<passFuncAddress43(x,y,&multiply42)<<endl; } int passFuncAddress43(int x,int y,int(*func)(int ,int)) { return func(x,y); } int multiply42(int x,int y) { cout<<"In int multiply42(int x,int y)"<<endl; return x*y; } int sum41(int x,int y) { cout<<"In int sum41(int x,int y)"<<endl; return x+y; }
Compile the above code via g++,and run as below
./h1 10000 10000
Please pay more attention to below function declaration and definition via passing function address.
//Pass function via address *, include return type,function address and parameter types int passFuncAddress43(int x,int y,int(*func)(int ,int)) { return func(x,y); }
When we invoke above function which we will pass arguments at first orderly and at last pass function address via & symbol
void callFuncAddress44(int x,int y) { cout<<"Sum of x and y is "<<passFuncAddress43(x,y,&sum41)<<endl; cout<<"Prod of x and y is "<<passFuncAddress43(x,y,&multiply42)<<endl; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2020-05-13 Notepad++ remove carrigae return format via regular expression [\r\n]+ replaced with :\n