C++学习笔记---指针

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

原文地址:https://www.cnblogs.com/edllixiaoyu/p/13581286.html