指针函数等

1.指针函数

本质上是一个函数,返回值是这个类型的指针

指针函数等_第1张图片

因为a的地址存放在fun函数中,程序结束后,地址释放,所以调用时为野指针。

a为局部变量,注意生命周期

指针函数等_第2张图片

 解决办法1.使用static延长变量a的生命周期,

2.地址传递

宗旨:保证存放局部变量的地址不释放

指针函数等_第3张图片

3.使用malloc主动申请堆区空间

指针函数等_第4张图片

2.函数指针 

1.什么是函数指针
函数指针是一个指向函数的指针变量,它可以指向某个函数的入口地址,,使得程序可以通过该指针变量调用该函数
函数指针通常用于函数回调的场景


2.函数指针的定义

函数返回值类型(*指针变量名称)(参数列表)

指针函数等_第5张图片
3.函数指针和指针函数的区别
最简单的辨别方式就是看函数名前面的指针*号有没有被括号 ()包含,如果被包含就是函数指针反之则是指针函数
指针函数本质是一个函数,其返回值为指针
函数指针本质是一个指针,其指向一个函数

3.函数指针数组

1.什么是函数指针数组
保存函数地址的数组
2.函数指针数组的定义
函数返回值类型(*数组名[数组元素个数])参数列表)
3.优点
多个类似函数,封装一起,提升阅读性

指针函数等_第6张图片

4.回调函数

1.什么是回调函数
回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现。最著名的回调函数调用有C/C++标准库stdlib.h/cstdlib中的快速排序函数qsort和二分查找函数bsearch中都会要求的一个与strcmp类似的参数,用于设置数据的比较方法回调函数的某一个参数是一个函数指针 

2.适用场景

a.线程:第三个参数为函数名

指针函数等_第7张图片

b. 信号

指针函数等_第8张图片

c.qsort

d.

指针函数等_第9张图片

你可能感兴趣的:(java,开发语言)