C++| C++ 入门教程(七)指针
7 指针
7.1 指针的基本概念
作用:通过指针间接访问内存
- 内存编号是从0开始的,一般是十六进制表示的(具体几个字节应该是看系统的)
- 可以利用指针变量来存变量的地址
语法:
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 修饰指针有三种情况:
- const 修饰指针:常量指针
const dataType* pointVariableName
指针本身可以改变,但是指针指向的值不能通过指针改变。
- const 修饰变量:指针常量
dataType* const pointVariableName
指针本身不可以改,但是指针指向的值可改变。
- const 即修饰指针又修饰变量 用两个 const 就可以了
const dataType* const pointVariableName
指针可以作为参数传入函数。这种过程我们成为址传递,又称为传址。传址后就可以修改实参具体的值。
如果选择将数组作为参数传入函数,有两种传法,一个是
int arr[]
,而数组可以看做是一个指针,因此也可以选择用int* arr
的方法传入,这样他就作为一个指针传入了。推荐阅读
- 七年之痒之后
- 七老修复好敏感、角质层薄、红血丝
- 迷失的世界(二十七)
- 七律.岭南骨科康复联谊有感
- opencv|opencv C++模板匹配的简单实现
- (七)谈条件
- 七律丨游长安晚归
- 工具|后天就是七夕节,你准备好了吗(送上几个七夕代码,展示你技能的时候到了!)
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 七绝|七绝 桃花