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

以指针作为函数的参数

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

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

指向常量的指针作为形参

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

指针类型的函数

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

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

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

指向函数的指针

函数指针的定义

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

为何需要函数指针?

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值