当前位置:   article > 正文

C/C++ 不带参数的回调函数 与 带参数的回调函数 函数指针数组 例子_c语言回调函数不定入参

c语言回调函数不定入参

先来不带参数的回调函数例子


  1. #include <iostream>
  2. #include <windows.h>
  3. void printFunc()
  4. {
  5. std::cout<<"printFunc"<<std::endl;
  6. }
  7. void CallFunc(void (*FuncPoint)())
  8. {
  9. FuncPoint();
  10. }
  11. int main(int argc,char* argv[])
  12. {
  13. CallFunc(printFunc);
  14.  system("pause");
  15. return 0;
  16. }


然后带参数的回调函数

  1. #include <iostream>
  2. #include <windows.h>
  3. void printFunc(int a)
  4. {
  5. std::cout<<"printFunc : "<<a<<std::endl;
  6. }
  7. void CallFunc(void (*FuncPoint)(int),int a)
  8. {
  9. FuncPoint(a);
  10. }
  11. int main(int argc,char* argv[])
  12. {
  13. CallFunc(printFunc,123);
  14. system("pause");
  15. return 0;
  16. }


函数指针数组的使用

  1. #include <iostream>
  2. #include <windows.h>
  3. void printFunc1(int a)
  4. {
  5. std::cout<<"printFunc1 : "<<a<<std::endl;
  6. }
  7. void printFunc2(int a)
  8. {
  9. std::cout<<"printFunc2 : "<<a<<std::endl;
  10. }
  11. int main(int argc,char* argv[])
  12. {
  13. void (*funcPointArray[2])(int)={printFunc1,printFunc2};
  14. for (int i=0;i<2;i++)
  15. {
  16. funcPointArray[i](3);
  17. }
  18. system("pause");
  19. return 0;
  20. }


使用TypeDef来简化上面的代码

  1. #include <iostream>
  2. #include <windows.h>
  3. typedef void (*FuncPoint)(int);
  4. void printFunc1(int a)
  5. {
  6. std::cout<<"printFunc1 : "<<a<<std::endl;
  7. }
  8. void printFunc2(int a)
  9. {
  10. std::cout<<"printFunc2 : "<<a<<std::endl;
  11. }
  12. int main(int argc,char* argv[])
  13. {
  14. //void (*funcPointArray[2])(int)={printFunc1,printFunc2};
  15. FuncPoint funcPointArray[]={printFunc1,printFunc2};
  16. for (int i=0;i<2;i++)
  17. {
  18. funcPointArray[i](3);
  19. }
  20. system("pause");
  21. return 0;
  22. }

本来我们需要使用:

void (*funcPointArray[2])(int)

其中变量是

funcPointArray[2]

于是 在TypeDef 里 我们用 FuncPoint 来代替这个变量,代替了上面整的一句话。

typedef void (*FuncPoint)(int);

后面使用的时候就用 FuncPoint

FuncPoint funcPointArray[]={printFunc1,printFunc2};



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/162500
推荐阅读
相关标签
  

闽ICP备14008679号