zoukankan      html  css  js  c++  java
  • 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也是可以传递函数指针的。

  • 相关阅读:
    Android 按键消息处理Android 按键消息处理
    objcopy
    SQLite多线程读写实践及常见问题总结
    android动画坐标定义
    Android动画效果translate、scale、alpha、rotate
    Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
    Flatten Binary Tree to Linked List
    Distinct Subsequences
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/dayq/p/15359656.html
Copyright © 2011-2022 走看看