C++| C++ 入门教程(七)指针

7 指针 7.1 指针的基本概念
作用:通过指针间接访问内存

  • 内存编号是从0开始的,一般是十六进制表示的(具体几个字节应该是看系统的)
  • 可以利用指针变量来存变量的地址
7.2 指针变量的定义和使用
语法:dataType * pointVariableName = &variableName
&是一个取地址符号。
【C++| C++ 入门教程(七)指针】你可以用解引用符号*来访问指针访问的内存。
*pointVariableName就表示variableName这一块内存里的存储的变量
7.3 指针所占内存空间
指针也是一种数据类型,那么这种类型占多少空间呢?
猜测,和系统相关。64位的系统的内存地址可能是64位,而32位系统可能是32位。
在32位系统下占用4个字节。而64位系统占8个字节。但是大多数开发环境都是32位。(此处也可以选择x64编译环境来切换。
7.4 空指针和野指针
空指针:指针变量指向内存中编号为 0 的空间
用途:初始化
注意:空指针指向的内存是不能访问的
语法:dataType* pointVariableName = NULL;
野指针:指针指向了非法的内存空间
这是一种错误,在程序中要尽量避免出现野指针
语法:int* p = (int*) 0x1100;
但是实际上 0x1100 这块空间是没有申请的。这块空间上没有声明任何的变量,也就没有被系统分配一块内存。因此是没有权限访问的。这样的程序是有错误的。
7.5 const 修饰指针
const 修饰指针有三种情况:
  1. const 修饰指针:常量指针const dataType* pointVariableName
    指针本身可以改变,但是指针指向的值不能通过指针改变。
  2. const 修饰变量:指针常量dataType* const pointVariableName
    指针本身不可以改,但是指针指向的值可改变。
  3. const 即修饰指针又修饰变量 用两个 const 就可以了const dataType* const pointVariableName
7.6 传址
指针可以作为参数传入函数。这种过程我们成为址传递,又称为传址。传址后就可以修改实参具体的值。
如果选择将数组作为参数传入函数,有两种传法,一个是int arr[],而数组可以看做是一个指针,因此也可以选择用int* arr的方法传入,这样他就作为一个指针传入了。

    推荐阅读