C语言——函数指针

张春  金牌会员 | 2024-6-11 22:15:28 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 571|帖子 571|积分 1713

一、函数指针的界说

函数指针是指向函数的指针变量,可以用来动态调用差别的函数。使用函数指针的一般步骤如下:
1、界说函数指针类型:typedef 返回值类型 (*指针变量名)(参数列表);
2、声明函数指针变量并赋值:指针变量名 = 函数名;
3、通过函数指针调用函数:(*指针变量名)(参数);
代码示例:
  1. #include <stdio.h>
  2. int myFunction(int x)
  3. {
  4.     return x*x;
  5. }
  6. void print()
  7. {
  8.     printf("hello world\n");
  9. }
  10. int main()
  11. {
  12.     int (*a)(int);
  13.     a = &myFunction;
  14.     void (*b)(void);
  15.     b = &print;
  16.     int result = a(5);
  17.     printf("Result:%d\n",result);
  18.     b();
  19.     return 0;
  20. }
复制代码
运行效果:
  1. Result:25
  2. hello world
复制代码
二、函数指针习题

界说一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
  1. int(*a)(int);
复制代码
三、函数指针进阶

指针数组和函数指针相结合。 指针数组指向差别的函数,通过引用数组中的指针元素,实现一个数组函数控制多个函数的功能。
代码示例: 
  1. #include <stdio.h>
  2. int add(int a,int b)
  3. {
  4.     return a+b;
  5. }
  6. int substract(int a,int b)
  7. {
  8.     return a-b;
  9. }
  10. double multial(int a,double b)
  11. {
  12.     return a*b;
  13. }
  14. int main()
  15. {
  16.     int (*a[2])(int,int);
  17.     a[0] = &add;
  18.     a[1] = &substract;
  19.     double (*b)(int ,double);
  20.     b = &multial;
  21.     printf("%d\n",a[0](5,4));
  22.     printf("%d\n",a[1](5,4));
  23.     printf("%.1f\n",b(5,0.2));
  24.     return 0;
  25. }
复制代码
运行效果:我们界说了一个包罗两个函数指针的指针数组a,分别指向add和subtract函数。通过调用a[0]和a[1],我们可以分别实现加法和减法运算。
  1. 9
  2. 1
  3. 1.0
复制代码

 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;
  1. int(*a[10])(int)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表