C++进阶--指针与函数

以指针作为函数的参数

为什么需要用指针做参数?

  • 需要数据双向传递时(饮用也可以达到此效果)。
  • 需要传递一组数据,值传递首地址运行效率比较高。

指向常量的指针作为形参

在这里插入图片描述
主要用途:想要传递地址,但又不想修改地址中的值

指针类型的函数

若函数的返回值是指针,该函数就是指针类型的函数。
存储类型 *函数名()
注意:不要将函数中非静态局部地址用作函数的返回值,因为离开函数后就失效了,这样做很危险,会访问未经授权的地址。

错误的例子:
在这里插入图片描述
正确的做法是:

1)返回一个在main函数中依然有效的地址。比如main函数中定义数组,在子函数中对该数组元素进行某种操作后,返回其中一个元素。
在这里插入图片描述
2)在子函数中通过new操作符动态申请的内存。不要忘记delete释放。
在这里插入图片描述

指向函数的指针

函数指针的定义

  • 定义形式:存储类型 数据类型 (*函数指针名)(); 注意:函数指针名外的括号不能省略,如果省略就变成了返回值为指针
  • 含义:函数指针指向的是程序代码存储区

为何需要函数指针?

  • 通过函数指针完成函数的回调。例如将函数的指针作为一个参数传递给一个函数,使得在处理事件时可以灵活的使用不同方法。
  • 调用者并不关心谁是被调用者。需要知道一个具有特定原型和限制条件的被调用函数。

例:编写一个计算函数compute,对两个整数进行各种计算。有一个形参为指向具体算法函数的指针,根据不同实参使用不同算法进行计算。
在这里插入图片描述
相应的main函数调用
在这里插入图片描述

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页