C++学习笔记---指针
2024-10-09 22:00:22
1、基本概念
作用:可以通过指针直接访问内存
- 内存编号是从0开始记录的,一般用16进制数字表示
- 可以利用指针变量保存地址
2、定义和使用
定义指针
他们的关系就是这样的
运行输出
使用指针
运行输出会发现变量a的值也一起改变了,这是因为在内存中*p和a都是一个内存地址
3、指针所占内存空间
在32位操作系统下占用4个字节,64位下占8个字节
4、空指针和野指针
- 空指针:指针变量指向内存中编号为0的空间,用于初始化指针
- 注意:空指针指向的内存是不可以访问的,因为0~255之间的内存编号是系统占用的
运行后报错,所以我们是没权限访问系统内存的
- 野指针:指变量指向的是非法的内存空间
虽然没报错,但是想一下随便指向一个地址,没有去申请这个地址的权限,有权利操作这个地址吗?
举个栗子:去酒店开房,网上随便订了一间还没有去前台登记,就想进房间,这是不允许的
使用一下运行
注意:在程序中,尽量避免野指针
5、const修饰指针
- const修饰指针---常量指针
- const修饰常量---指针常量
- const即修饰指针,又修饰常量
5.1、常量指针:const 数据类型 * 指针名
指针的指向可以修改,但指针指向的值不可以修改
5.2、指针常量:数据类型 * const 指针名
指针的指向不可以改,但指针指向的值可以修改
5.3、const即修饰指针,又修饰常量:const 数据类型 * const 指针名
指针指向的值和地址都不可以修改
6、指针和数组
- 利用指针访问数组元素
运行后
7、指针和函数
- 利用指针作为函数的参数,可以修改实参的值
值传递
运行后
如果想要main中的a和b也一起交换就要使用地址传递
运行后
因为在swap2方法中都是修改同一个内存地址的值,所以main中的a和b也交换了
最新文章
- [转载]iOS9 使用CoreLocation
- Mac地址泛洪攻击的防御措施和具体配置
- IDEA 回滚SVN更新内容
- 1. ProGit-起步
- bnuoj 20834 Excessive Space Remover(水水)
- 第八篇:python高级之多进程
- JS 数组扩展函数--求起始项到终止项和
- CodeForces 222D - Olympiad
- 2017ecjtu-summer training #11 POJ 1018
- 搜索引擎的缓存(cache)机制
- 利用PowerUpSQL攻击SQL Server实例
- DW1000 用户手册中文版 第5章 媒体访问控制(帧过滤)
- elasticsearch5.5.3 源码学习 idea下源码编译
- row_number()over()使用
- iis和tomcat同时运行,完美解决80端口冲突问题
- docker进程分析
- JAVA 和.NET在安全功能的比较
- 利用Nuget打包添加tools下intsall.ps1【powershell脚本】修改.csproj文件
- RAC集群安装校验输出信息
- 重识linux-仅执行一次的工作调动at