微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 周立功手把手教你学嵌入式编程:函数指针与指针函数的应用

周立功手把手教你学嵌入式编程:函数指针与指针函数的应用

时间:07-29 来源:ZLG致远电子 点击:

43   { 

44          return 0;

45   }

46

47   typede double (*PF)(double *dbData, int iSize);          // 定义函数指针类型

48   PF getOperation(char c)                                   // 根据字符得到操作类型,返回函数指针

49   {

50          switch (c){ 

51          case 'd':

52                 return getMax; 

53          case 'x': 

54                 return getMin; 

55          case 'p': 

56                 return getAverage;

57          default:

58                 return unKnown;       

59          }

60   } 

61

62   int main(void) 

63   {

64          double dbData[] = {3.1415926, 1.4142, -0.5, 999, -313, 365}; 

65          int iSize = sizeof(dbData) / sizeof(dbData[0]); 

66          char c; 

67

68          printf("Please input the Operation :\n");

69          c = getchar(); 

70          PF pf = getOperation(c);

71          printf("result is %lf\n", pf(dbData, iSize));

72          return 0;

73   }

 

前4个函数分别实现了求最大值、最小值、平均值和未知算法,getOperation()根据输入字符得到的返回值是以函数指针的形式返回的,从pf(dbData, iSize)可以看出是通过这个指针调用函数的。注意,指针函数可以返回新的内存地址、全局变量的地址和静态变量的地址,但不能返回局部变量的地址,因为函数结束后,在函数内部的声明的局部变量的声明周期已经结束,内存将自动放弃。显然,在主调函数中访问这个指针所指向的数据,将会产生不可预料的结果。

想学更多嵌入式课程,请扫描下图二维码,马上学习!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top