C++函数指针记录
2021/10/1 17:10:51
本文主要是介绍C++函数指针记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 #include <iostream> 2 using namespace std; 3 #include <conio.h> 4 5 int max(int x, int y); //求最大数 6 int min(int x, int y); //求最小数 7 int add(int x, int y); //求和 8 void process(int i, int j, int (*p)(int a, int b)); //应用函数指针 9 10 int main() 11 { 12 int x, y; 13 cin>>x>>y; 14 15 cout<<"Max is: "; 16 process(x, y, max); 17 18 cout<<"Min is: "; 19 process(x, y, min); 20 21 cout<<"Add is: "; 22 process(x, y, add); 23 24 getch(); 25 return 0; 26 } 27 28 int max(int x, int y) 29 { 30 return x > y ? x : y; 31 } 32 33 int min(int x, int y) 34 { 35 return x > y ? y : x; 36 } 37 38 int add(int x, int y) 39 { 40 return x + y; 41 } 42 43 void process(int i, int j, int (*p)(int a, int b)) 44 { 45 cout<<p(i, j)<<endl; 46 }
这份代码,应该是网上找的,非常清晰的关于函数指针的例子。
1 #include<iostream> 2 #include "windows.h" 3 using namespace std; 4 int main() 5 { 6 typedef void (*Hello)(); 7 HMODULE hMod = LoadLibrary("test.dll"); 8 if(hMod!=NULL) 9 { 10 Hello hello = (Hello)GetProcAddress(hMod,"test");//void test(); 可以理解为取test()函数地址 11 hello(); 12 cout<<"加载成功"; 13 } 14 else 15 { 16 cout<<"加载失败"; 17 } 18 }
加载动态库的时候,也是使用函数指针的方式。
1 #include<iostream> 2 #include "windows.h" 3 using namespace std; 4 5 void he() 6 { 7 MessageBox(0, "Hello World from DLL!\n","Hi",MB_ICONINFORMATION); 8 } 9 int main() 10 { 11 typedef void (*Hello)(void (*p)()); 12 HMODULE hMod = LoadLibrary("test.dll"); 13 if(hMod!=NULL) 14 { 15 Hello hello = (Hello)GetProcAddress(hMod,"test");//调用dll的时候,也可以传个函数地址过去,在dll里面运行 16 hello(&he); 17 cout<<"加载成功"; 18 while(true){ 19 } 20 } 21 else 22 { 23 cout<<"加载失败"; 24 } 25 }
调用dll也是可以传递函数指针的。
这篇关于C++函数指针记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02在 Objective-C 中strong 和 retain有什么区别-icode9专业技术文章分享
- 2024-11-02NSString 中的 hasPrefix 有什么作用-icode9专业技术文章分享
- 2024-11-02在 C 和 Objective-C 中inline的用法是什么-icode9专业技术文章分享
- 2024-11-02文件掩码什么意思?-icode9专业技术文章分享
- 2024-11-02在 Git 提交之前运行 composer cs-fix 命令怎么实现-icode9专业技术文章分享
- 2024-11-02为 Composer 的 cs-fix 命令指定一个目录怎么实现-icode9专业技术文章分享
- 2024-11-02微信公众号开发中怎么获取用户的 unionid-icode9专业技术文章分享
- 2024-11-01lip-sync公司指南:一文读懂主要玩家和技术
- 2024-11-01Anthropic的新RAG方法——提升大型语言模型在特定领域的表现
- 2024-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享