• 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!
    ","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也是可以传递函数指针的。

  • 相关阅读:
    前端知识---html
    Python3中的运算符
    Python中的print、input函数以及Python中交换两个变量解析
    我的第一个Python程序,定义主函数,eval、format函数详解,
    MySQL创建索引
    认识MySQL中的索引
    MySQL中的函数
    MySQL的查询语句
    MySQL中增删改操作
    MySQL中的运算符和时间运算
  • 原文地址:https://www.cnblogs.com/dayq/p/15359656.html
Copyright © 2020-2023  润新知