赞
踩
先来不带参数的回调函数例子
- #include <iostream>
- #include <windows.h>
-
- void printFunc()
- {
- std::cout<<"printFunc"<<std::endl;
- }
-
- void CallFunc(void (*FuncPoint)())
- {
- FuncPoint();
- }
-
- int main(int argc,char* argv[])
- {
- CallFunc(printFunc);
- system("pause");
- return 0;
- }
然后带参数的回调函数
- #include <iostream>
- #include <windows.h>
- void printFunc(int a)
- {
- std::cout<<"printFunc : "<<a<<std::endl;
- }
- void CallFunc(void (*FuncPoint)(int),int a)
- {
- FuncPoint(a);
- }
-
- int main(int argc,char* argv[])
- {
- CallFunc(printFunc,123);
-
- system("pause");
- return 0;
- }
函数指针数组的使用
- #include <iostream>
- #include <windows.h>
-
- void printFunc1(int a)
- {
- std::cout<<"printFunc1 : "<<a<<std::endl;
- }
-
- void printFunc2(int a)
- {
- std::cout<<"printFunc2 : "<<a<<std::endl;
- }
-
- int main(int argc,char* argv[])
- {
-
- void (*funcPointArray[2])(int)={printFunc1,printFunc2};
-
- for (int i=0;i<2;i++)
- {
- funcPointArray[i](3);
- }
- system("pause");
- return 0;
- }
使用TypeDef来简化上面的代码
- #include <iostream>
- #include <windows.h>
-
- typedef void (*FuncPoint)(int);
-
- void printFunc1(int a)
- {
- std::cout<<"printFunc1 : "<<a<<std::endl;
- }
-
- void printFunc2(int a)
- {
- std::cout<<"printFunc2 : "<<a<<std::endl;
- }
-
- int main(int argc,char* argv[])
- {
-
- //void (*funcPointArray[2])(int)={printFunc1,printFunc2};
-
- FuncPoint funcPointArray[]={printFunc1,printFunc2};
-
- for (int i=0;i<2;i++)
- {
- funcPointArray[i](3);
- }
- system("pause");
- return 0;
- }
void (*funcPointArray[2])(int)
funcPointArray[2]
typedef void (*FuncPoint)(int);
FuncPoint funcPointArray[]={printFunc1,printFunc2};
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。