【学习笔记】【C语言】指向函数的指针

每个函数都有自己的内存地址,指针保存了函数的地址后就能指向函数了。

 1 #include <stdio.h>
 2 
 3 
 4 double haha(double d, char *s, int a)
 5 {
 6     
 7 }
 8 
 9 /*
10  掌握:
11  1.看懂语法
12  2.定义指向函数的指针
13     double (*p)(double, char *, int);
14     p = haha;
15     或者
16     double (*p)(double, char *, int) = haha;
17  3.如何间接调用函数
18  1> p(10.7, "jack", 10);
19  2> (*p)(10.7, "jack", 10);
20  */
21 
22 void test()
23 {
24     printf("调用了test函数
");
25 }
26 
27 int sum(int a, int b)
28 {
29     return a + b;
30 }
31 
32 int main()
33 {
34     // 定义指针变量指向sum函数
35     // 左边的int:指针变量p指向的函数返回int类型的数据
36     // 右边的(int, int):指针变量p指向的函数有2个int类型的形参
37     int (*p)(int, int);
38     
39     p = sum;
40     
41     //int c = p(10, 11);
42     
43     //int c = (*p)(10, 11);
44     
45     int c = sum(10, 9);
46     
47     printf("c is %d
", c);
48     
49     
50     return 0;
51 }
52 
53 
54 void test1()
55 {
56     // (*p)是固定写法,代表指针变量p将来肯定是指向函数
57     // 左边的void:指针变量p指向的函数没有返回值
58     // 右边的():指针变量p指向的函数没有形参
59     void (*p)();
60     
61     // 指针变量p指向了test函数
62     p = test;
63     
64     p();
65     //(*p)(); // 利用指针变量间接调用函数
66     
67     //test(); // 直接调用函数
68 }
 
原文地址:https://www.cnblogs.com/dssf/p/4601190.html