编写一个Test函数,在程序入口main函数调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#import <stdio.h>

// test函数声明
void test();

int main() {

// 调用test函数
test();

return 0;

}

// test函数实现
void test() {
printf("-------------\n");
}

调用函数的本质call 函数地址,函数名其实就是该函数类型指针变量,存储值函数的地址,因此可以通过函数名就可以调用一个函数。

函数指针变量定义并且调用函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import <stdio.h>

void test(void);

int main() {

// 定义一个无返回值 没有形参的函数指针变量testP
void (*testP)(void);
testP = test;

// 通过函数指针变量调用函数

// 方式一
testP();

// 方式二
(*testP)();

return 0;
}

void test() {
printf("-------------\n");
}

如果知道test函数在内存的地址为0x100000f60。通过下面直接定义函数指针变量赋值进行调用

开发中函数指针使用场景:作为参数用作回调,同时可以利用typedef简写函数指针变量的类型