可以通过auto关键字将一个变量直接变为函数指针
auto具有自动类型推断功能
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 void fun1(int a){ 6 7 cout<<"fun1:"<<a<<endl; 8 } 9 10 int main(){ 11 12 auto fun=fun1; 13 (*fun)(3); 14 system("pause"); 15 return 0; 16 }
上述代码中fun会被直接认为是一个函数指针
我们还可以将函数指针定义为函数指针数组
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 6 7 void fun1(int a){ 8 9 cout<<"fun1:"<<a<<endl; 10 } 11 void fun2(int a){ 12 13 cout<<"fun2:"<<a<<endl; 14 } 15 void fun3(int a){ 16 17 cout<<"fun3:"<<a<<endl; 18 } 19 20 int main(){ 21 22 23 void (*fun[3])(int)={fun1,fun2,fun3}; 24 (*(fun[0]))(10); 25 (*(fun[1]))(20); 26 (*(fun[2]))(30); 27 system("pause"); 28 return 0; 29 }
和定义函数指针唯一不同的地方就是多加了一个[]
数组名是指向第一个元素的指针,