关于c++:C-C-入门教程七指针

5次阅读

共计 924 个字符,预计需要花费 3 分钟才能阅读完成。

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

正文完
 0