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也交换了

最新文章

  1. [转载]iOS9 使用CoreLocation
  2. Mac地址泛洪攻击的防御措施和具体配置
  3. IDEA 回滚SVN更新内容
  4. 1. ProGit-起步
  5. bnuoj 20834 Excessive Space Remover(水水)
  6. 第八篇:python高级之多进程
  7. JS 数组扩展函数--求起始项到终止项和
  8. CodeForces 222D - Olympiad
  9. 2017ecjtu-summer training #11 POJ 1018
  10. 搜索引擎的缓存(cache)机制
  11. 利用PowerUpSQL攻击SQL Server实例
  12. DW1000 用户手册中文版 第5章 媒体访问控制(帧过滤)
  13. elasticsearch5.5.3 源码学习 idea下源码编译
  14. row_number()over()使用
  15. iis和tomcat同时运行,完美解决80端口冲突问题
  16. docker进程分析
  17. JAVA 和.NET在安全功能的比较
  18. 利用Nuget打包添加tools下intsall.ps1【powershell脚本】修改.csproj文件
  19. RAC集群安装校验输出信息
  20. 重识linux-仅执行一次的工作调动at

热门文章

  1. vim配置汇总
  2. CSS 常见样式 特殊用法 贯穿线&徽章&箭头
  3. Druid实现数据库连接用户密码加密
  4. Java随谈(一)魔术数字、常量和枚举
  5. Cortex-M3双堆栈MSP和PSP+函数栈帧
  6. Java date format 时间格式化
  7. three.js学习5_渲染器
  8. Flutter 开发从 0 到 1(三)布局与 ListView
  9. springCloud项目搭建
  10. Vue 网站首页加载优化