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

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

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

    // 指针指向的是一个函数

 

这种写法确实让人非常难懂,以至于一些初学者产生误解,认为写出别人看不懂的代码才能显示自己水平高。而事实上恰好相反,能否写出通俗易懂的代码是衡量程序员是否优秀的标准。当使用typedef后,则PF就成为了一个函数指针类型。即:

typedef int (*PF)(int, int);

 

有了这个类型,那么上述函数的声明就变得简单多了。即:

       PF ff(int);

 

下面将以程序清单 2.3为例,说明用函数指针作为函数返回值的用法。当用户分别输入d、x和p时,求数组的最大值、最小值和平均值。

 

程序清单 2.3  求最值与平均值范例程序

1     #include

2     #include

3     double getMin(double *dbData, int iSize)             // 求最小值

4     {

5            double dbMin; 

6

7            assert((dbData != NULL) && (iSize > 0));

8            dbMin = dbData[0]; 

9            for (int i = 1; i < iSize; i++){ 

10                 if (dbMin > dbData[i]){

11                        dbMin = dbData[i];

12                 }

13          }

14          return dbMin;

15   }

16

17   double getMax(double *dbData, int iSize)                // 求最大值

18   {

19          double dbMax;

20

21          assert((dbData != NULL) && (iSize > 0)); 

22          dbMax = dbData[0]; 

23          for (int i = 1; i < iSize; i++){

24                 if (dbMax < dbData[i]){ 

25                        dbMax = dbData[i];

26                 }

27          }

28          return dbMax;

29   }

30

31   double getAverage(double *dbData, int iSize)          // 求平均值

32   {

33          double dbSum = 0;

34

35          assert((dbData != NULL) && (iSize > 0)); 

36          for (int i = 0; i < iSize; i++){

37                 dbSum += dbData[i]; 

38          }

39          return dbSum/iSize;

40   } 

41

42   double unKnown(double *dbData, int iSize)            // 未知算法

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

网站地图

Top