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

7 指针

7.1 指针的基本概念

作用:通过指针间接访问内存

  • 内存编号是从0开始的,一般是十六进制表示的(具体几个字节应该是看系统的)
  • 可以利用指针变量来存变量的地址

7.2 指针变量的定义和使用

语法:dataType * pointVariableName = &variableName

&是一个取地址符号。

你可以用解引用符号*来访问指针访问的内存。

*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的方法传入,这样他就作为一个指针传入了。

你可能感兴趣的:(c++)