[产品应用] 如何用函数指针调用函数?

[复制链接]
790|8
 楼主| AdaMaYun 发表于 2024-4-7 12:00 | 显示全部楼层 |阅读模式


给大家举一个例子:

  1. int Func(int x);   /*声明一个函数*/
  2. int (*p) (int x);  /*定义一个函数指针*/
  3. p = Func;          /*将Func函数的首地址赋给指针变量p*/
  4. p = &Func;          /*将Func函数的首地址赋给指针变量p*/


赋值时函数 Func 不带括号,也不带参数。由于函数名 Func 代表函数的首地址,因此经过赋值以后,指针变量 p 就指向函数 Func() 代码的首地址了。


下面来写一个程序,看了这个程序你们就明白函数指针怎么使用了:
  1. #include <stdio.h>
  2. int Max(int, int);  //函数声明
  3. int main(void)
  4. {
  5.     int(*p)(int, int);  //定义一个函数指针
  6.     int a, b, c;
  7.     p = Max;  //把函数Max赋给指针变量p, 使p指向Max函数
  8.     printf("please enter a and b:");
  9.     scanf("%d%d", &a, &b);
  10.     c = (*p)(a, b);  //通过函数指针调用Max函数
  11.     printf("a = %d\nb = %d\nmax = %d\n", a, b, c);
  12.     return 0;
  13. }
  14. int Max(int x, int y)  //定义Max函数
  15. {
  16.     int z;
  17.     if (x > y)
  18.     {
  19.         z = x;
  20.     }
  21.     else
  22.     {
  23.         z = y;
  24.     }
  25.     return z;
  26. }

特别注意的是,因为函数名本身就可以表示该函数地址(指针),因此在获取函数指针时,可以直接用函数名,也可以取函数的地址。

  1. p = Max可以改成 p = &Max
  2. c = (*p)(a, b) 可以改成 c = p(a, b)

中国龙芯CDX 发表于 2024-4-10 13:21 | 显示全部楼层
函数指针的调用其实还是对地址的调用
szt1993 发表于 2024-4-10 13:52 | 显示全部楼层
函数名本身就可以表示该函数地址(指针),因此在获取函数指针时,可以直接用函数名,也可以取函数的地址。

评论

C语言指针  发表于 2024-4-17 08:52
小夏天的大西瓜 发表于 2024-4-10 13:59 | 显示全部楼层
其实指针而言*和&理解清楚就没什么大问题
jf101 发表于 2024-4-14 14:43 | 显示全部楼层
指针就是寻找地址的一个工具
小小蚂蚁举千斤 发表于 2024-4-15 09:58 | 显示全部楼层
用函数指针调用函数非常实用方便
OKAKAKO 发表于 2024-4-19 18:00 | 显示全部楼层
函数名本身就可以表示该函数地址,指针还是非常方便的
星辰大海不退缩 发表于 2024-4-21 12:58 | 显示全部楼层
函数名本身就可以表示该函数地址(指针),因此在获取函数指针时,可以直接用函数名,也可以取函数的地址。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

308

主题

2692

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部