8.2函数指针
8.2函数指针
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void f(int i) 5 { 6 printf("void f(),%d ", i); 7 } 8 9 void main() 10 { 11 void(*pf)(int) = f;//函数指针 12 13 pf(10); 14 15 (*pf)(20); 16 17 (pf)(30); 18 19 system("pause"); 20 }
//函数指针数组
数组存放函数,根据用户输入,执行不同的函数
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 void f(int i) 6 { 7 printf("void f(),%d ", i); 8 } 9 10 void g(int i) 11 { 12 printf("void g(),%d ", i); 13 } 14 15 void h(int i) 16 { 17 printf("void h(),%d ", i); 18 } 19 20 void main() 21 { 22 int i = 0; 23 void(*fa[])(int) = { f,g,h };//函数指针数组 24 25 scanf("%d", &i); 26 27 if (i >= 0 && i <= sizeof(fa) / sizeof(fa[0])) 28 { 29 (*fa[i])(0); 30 } 31 32 system("pause"); 33 }
函数指针作为函数的参数
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int plus(int a, int b) 5 { 6 return a + b; 7 } 8 9 int minus(int a, int b) 10 { 11 return a - b; 12 } 13 14 void cal(int(*f)(int, int))//函数指针作为函数的参数 15 { 16 printf("%d ", (*f)(2, 3)); 17 } 18 19 void main() 20 { 21 cal(plus);//5 22 23 cal(minus);//-1 24 25 system("pause"); 26 }