【C++】指针

1.为什么要使用指针

①函数的值传递,无法通过调用函数,来修改函数的实参.而指针可以
在这里插入图片描述

②被调用函数需要提供更多的"返回值"给调用函数
下面的例子中,加血成功返回ture,否则返回false;另外还需要返回最新的血量
在这里插入图片描述
③减少值传递带来的花费,所以很快

2.解引用,又叫间接引用

访问和修改指针指向的内容,与C++的引用无关
在这里插入图片描述

3.空指针

就是地址为0的指针
用法:增加代码稳健性
在这里插入图片描述
使用情形
在这里插入图片描述

4.指针的自增操作

下面的例子,要访问15,用的不是p+4(想的是p是地址然后加4个地址,到下一位),实际上c++内部做了优化,因为下面的指针本来是int *类型的,所以编译器知道下一个是四个字节,所以用p+1就可以
在这里插入图片描述
例子2
在这里插入图片描述

5.指针的自减

例子:字符串反转的方法三
在这里插入图片描述

在这里插入图片描述

6.指针与指针运算

在这里插入图片描述

7. const

总结:看const离类型(int)近,还是离指针变量名近,离谁近,就修饰谁,谁就不变
在这里插入图片描述

在这里插入图片描述

下面的也是引用的本质
在这里插入图片描述

8.二级指针

二级指针需要两个星号,
先用*liujian得到柜子一的地址,**liujian得到枪
在这里插入图片描述
在这里插入图片描述

二级指针的用途

在这里插入图片描述

  • 普通指针:可以将变量通过函数带入函数内部,下面swap函数访问到swap外部的变量,可以把x,y带入swap,进行修改
    在这里插入图片描述
  • 二级指针
    最后可以打印boy了,就是带出了.但如果用第二幅图的一级指针就不能
    在这里插入图片描述
    在这里插入图片描述
    多级指针,***理解为多把钥匙
    在这里插入图片描述
    在这里插入图片描述

9.指针数组

存放指针的数组; 而加了括号的是指向数组的指针
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.数组指针

在这里插入图片描述
第二种,指针访问法
用 星号钥匙开启 ((*p)+j)即 *((*p)+j),里面的 *p是拿到数组
开始遍历以找到数组里的最小值:下面的 *p也是拿到数组,把数组的第0个元素的地址给boy,后面判断也是,用 *boy拿到值和后面的值比较,但是比完之后赋值的时候是地址
在这里插入图片描述

11.指针与数组的区别

  • 1.赋值
    不能把数组b的值赋给数组a,但是指针可以随意指

在这里插入图片描述

  • 4.指针数组和数组指针

在这里插入图片描述

  • 5.传参
    在这里插入图片描述
    在这里插入图片描述

12. void*指针

不允许进行取值和运算

但是强制类型转化后就可以
在这里插入图片描述

在这里插入图片描述

13. 函数指针

在这里插入图片描述
定义、赋值和两种调用(第一种调用也是可以看做用*钥匙打开fp放的函数的地址)
在这里插入图片描述
qsort的最后一个参数就是填的函数指针,排序的依据函数
在这里插入图片描述
日后学习多线程会用到函数指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值