1.指针函数
本质上是一个函数,返回值是这个类型的指针
因为a的地址存放在fun函数中,程序结束后,地址释放,所以调用时为野指针。
a为局部变量,注意生命周期
解决办法1.使用static延长变量a的生命周期,
2.地址传递
宗旨:保证存放局部变量的地址不释放
3.使用malloc主动申请堆区空间
2.函数指针
1.什么是函数指针
函数指针是一个指向函数的指针变量,它可以指向某个函数的入口地址,,使得程序可以通过该指针变量调用该函数
函数指针通常用于函数回调的场景
2.函数指针的定义
函数返回值类型(*指针变量名称)(参数列表)
3.函数指针和指针函数的区别
最简单的辨别方式就是看函数名前面的指针*号有没有被括号 ()包含,如果被包含就是函数指针反之则是指针函数。
指针函数本质是一个函数,其返回值为指针
函数指针本质是一个指针,其指向一个函数
3.函数指针数组
1.什么是函数指针数组
保存函数地址的数组
2.函数指针数组的定义
函数返回值类型(*数组名[数组元素个数])参数列表)
3.优点
多个类似函数,封装一起,提升阅读性
4.回调函数
1.什么是回调函数
回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现。最著名的回调函数调用有C/C++标准库stdlib.h/cstdlib中的快速排序函数qsort和二分查找函数bsearch中都会要求的一个与strcmp类似的参数,用于设置数据的比较方法回调函数的某一个参数是一个函数指针
2.适用场景
a.线程:第三个参数为函数名
b. 信号
c.qsort
d.