以指针作为函数的参数
为什么需要用指针做参数?
- 需要数据双向传递时(饮用也可以达到此效果)。
- 需要传递一组数据,值传递首地址运行效率比较高。
指向常量的指针作为形参
主要用途:想要传递地址,但又不想修改地址中的值
指针类型的函数
若函数的返回值是指针,该函数就是指针类型的函数。
存储类型 *函数名()
注意:不要将函数中非静态局部地址用作函数的返回值,因为离开函数后就失效了,这样做很危险,会访问未经授权的地址。
错误的例子:
正确的做法是:
1)返回一个在main函数中依然有效的地址。比如main函数中定义数组,在子函数中对该数组元素进行某种操作后,返回其中一个元素。
2)在子函数中通过new操作符动态申请的内存。不要忘记delete释放。
指向函数的指针
函数指针的定义
- 定义形式:存储类型 数据类型 (*函数指针名)(); 注意:函数指针名外的括号不能省略,如果省略就变成了返回值为指针
- 含义:函数指针指向的是程序代码存储区
为何需要函数指针?
- 通过函数指针完成函数的回调。例如将函数的指针作为一个参数传递给一个函数,使得在处理事件时可以灵活的使用不同方法。
- 调用者并不关心谁是被调用者。需要知道一个具有特定原型和限制条件的被调用函数。
例:编写一个计算函数compute,对两个整数进行各种计算。有一个形参为指向具体算法函数的指针,根据不同实参使用不同算法进行计算。
相应的main函数调用