周立功手把手教你学嵌入式编程:函数指针与指针函数的应用
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)可以看出是通过这个指针调用函数的。注意,指针函数可以返回新的内存地址、全局变量的地址和静态变量的地址,但不能返回局部变量的地址,因为函数结束后,在函数内部的声明的局部变量的声明周期已经结束,内存将自动放弃。显然,在主调函数中访问这个指针所指向的数据,将会产生不可预料的结果。
想学更多嵌入式课程,请扫描下图二维码,马上学习!
函数指针 指针函数 数据结构 ametal 程序设计 相关文章:
- 周立功教你学C语言编程与程序设计:这样写函数指针数组最好用(07-31)
- 周立功“程序设计与数据结构”:深度解剖动态分布内存的free()函数与realloc()函数(07-25)
- 周立功《程序设计与数据结构》:字符串函数(08-05)
- 嵌入式如何进一步成长,该学习哪些书呢?(08-13)
- 不完全类型和抽象数据类型的定义(08-14)
- 怎么像整数一样计算字符?(08-14)