C语言中函数指针的三种使用方法总结
在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正。写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有互补,只有分享,才能使彼此更加成长。
定义方式:int (*p)(int x, int y);
实现代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#include <stdio.h> int sum( int x, int y){ return x + y; } int reduce( int x, int y){ return x - y; } int multiply( int x, int y){ return x * y; } float divide( int x, int y){ if (y ==0) return 0; else return x *1.0f/ y; } struct Student{ int age; float weight; char *name; void (*studentP()); } int main( int argc, const char * argv[]) { // 1.定义函数指针 int (*p)( int x, int y); // 2.初始化 p = sum; // 3.赋值 int s = p(3,2); // 4.打印 printf ( "%d\n" ,s); //=5; //-------------- printf ( "请输入数字1,2,3,4\n" ); int num; scanf ( "%d" ,&num); switch (num) { case 1: p = sum; break ; case 2: p = reduce; break ; case 3: p = multiply; break ; case 4: p = divide; break ; } int result = p(22,2); printf ( "%d\n" ,result); //结构体: struct Student stu = (22,88, "tom" ,studp); printf ( "结构体长度=%d" , sizeof (stu)); //1. stu.studp; //2. struct stu* stp = &stu; (*stp).studp; //3. stp -> studp; return 0; } |
如有疑问请留言或到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/lovoo/article/details/51334302