C语言函数指针做函数参数案例

小咪咪 2022-09-17 09:27 327阅读 0赞

本案例利用函数指针当作函数的参数,函数 add(int (*pf)(int*,int),int *a,int n)可以做到传入addOne就对数组a中每个数值加1,传入addTwo就对数组a中每个数值加2,案件具体代码如下:

  1. #include <stdio.h>
  2. //对数组每个数加1
  3. int addOne(int *a,int n){
  4. for(int i=0;i<n;i++)
  5. ++a[i];
  6. return 1;
  7. }
  8. //对数组每个数加2
  9. int addTwo(int *a,int n){
  10. for(int i=0;i<n;i++)
  11. a[i]+=2;
  12. return 2;
  13. }
  14. //对数组每个数加3
  15. int addThree(int *a,int n){
  16. for(int i=0;i<n;i++)
  17. a[i]+=3;
  18. return 3;
  19. }
  20. //函数指针作参数
  21. int add(int (*pf)(int*,int),int *a,int n){
  22. return (*pf)(a,n);
  23. }
  24. int main( void )
  25. {
  26. int a[]={1,2,3,4,5,6,7,8,9,10};
  27. printf("\n原始a[]:");
  28. for(int i=0;i<10;i++)
  29. printf("%d ",a[i]); //输出原始数组值
  30. printf("\n函数返回值:%d",add(addOne,a,10));
  31. printf("\n传入addOne后:");
  32. for(int i=0;i<10;i++)
  33. printf("%d ",a[i]); //输出数组值
  34. printf("\n函数返回值:%d",add(addTwo,a,10));
  35. printf("\n传入addTwo后:");
  36. for(int i=0;i<10;i++)
  37. printf("%d ",a[i]); //输出数组值
  38. printf("\n函数返回值:%d",add(addThree,a,10));
  39. printf("\n传入addThree后:");
  40. for(int i=0;i<10;i++)
  41. printf("%d ",a[i]); //输出数组值
  42. }

运行结果:

  1. 原始a[]:1 2 3 4 5 6 7 8 9 10
  2. 函数返回值:1
  3. 调用函数(*pf[0])()后a[]:2 3 4 5 6 7 8 9 10 11
  4. 函数返回值:2
  5. 调用函数(*pf[1])()后a[]:4 5 6 7 8 9 10 11 12 13
  6. 函数返回值:3
  7. 调用函数(*pf[2])()后a[]:7 8 9 10 11 12 13 14 15 16

发表评论

表情:
评论列表 (有 0 条评论,327人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C语言 指针函数参数

    指针参数         指针参数:指针参数使得被调用的函数能够访问和修改主调函数中对象的值。 由于C语言是以传值的方式将参数的值传递给被调用函数,因此,被调用函数不能