函数指针数组

函数指针说完了。我们接下来来看看函数指针数组。

多了俩字。数组。前面四个字还一样。那是不是就是有一个数组,用它来盛放函数指针。嗯,没错,就是这样。

有了刚才的基础,我直接给出例子。

 

 
  1. void (*funcPointerArray[3])(double x);//函数指针数组

  2. void (*funcPointer)(double x);//函数指针

 

两个放在一起对比,函数指针数组无非就像数组声明一样,在后面加了[]而已。仅此而已。

那它怎么用呢?

 

 
  1. void f1(double x){}

  2. void f2(double x){}

  3. void f3(double x){}

 

来三个具体的函数,f1,f2,f3.

 

 
  1. void (*funcPointerArray[3])(double x);

  2. funcPointerArray[0]=f1;

  3. funcPointerArray[1]=f2;

  4. funcPointerArray[2]=f3;

  5.  
  6. funcPointerArray[0](“2.333333”);

  7. funcPointerArray[1](“6.666666”);

 

 

简直就和普通的数组一模一样。没错,无非他存储的是函数指针而已。

 

最后,贴一个用函数指针数组的具体的应用的例子。

 
  1. #include <stdio.h>

  2.  
  3. void addItem(char *name)

  4. {

  5. printf("Add %s successfully!\n",name);

  6. }

  7.  
  8. void deleteItem(char *name)

  9. {

  10. printf("Delete %s successfully!\n", name);

  11. }

  12.  
  13. void findItem(char *name)

  14. {

  15. printf("Find %s successfully!\n", name);

  16. }

  17.  
  18. void updateItem(char *name)

  19. {

  20. printf("Update %s successfully!\n", name);

  21. }

  22.  
  23. void main()

  24. {

  25. void(*funcPointerArray[4])(char *name);

  26. funcPointerArray[0] = addItem;

  27. funcPointerArray[1] = deleteItem;

  28. funcPointerArray[2] = findItem;

  29. funcPointerArray[3] = updateItem;

  30. printf("Please enter a number(0-3) to continue:");

  31. int num;

  32. scanf_s("%d", &num,1);

  33. printf("Please enter the name of the goods:");

  34. char buf[128];

  35. scanf_s("%s", &buf,128);

  36. funcPointerArray[num](buf);

  37. }

 

 

在上述的例子中,用函数指针数组代替了大量的switch case 直接通过传入的num值来调用不同的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值