指针(一)

指针基础

在C++中,指针是至关重要的组成部分。它是C++语言最强大的功能之一,也是最棘手的功能之一。

指针具有强大的能力,其本质是协助程序员完成内存的直接操纵

指针:特定类型数据在内存中的存储地址,即内存地址。

指针只是一个逻辑概念,其实际应用是:指针变量,如,变量p就是指针变量。

指针变量的定义语法:

1.先声明,后赋值:

int num = 10;

int* p;
p = #

2.声明和赋值同步:

int num = 10;
int* p = &num

变量类型(如上int)表示,指针(内存地址)指向的内存区域,存放的是整型数据

*符号有两种含义:

  - 声明时:*p,表示变量p,是指针变量(存的是内存地址)

  - 使用时:*p,表示取指针p执行内存区域的数据

cout << p;  //输出num变量地址
cout << *p; //输出数据10

&符号表示取变量内存地址,是一个取内存地址的单目操作符

细节

说明

示例

指针变量类型

说明指针指向区域的数据类型

int *p; 指针指向区域存放int

*符号,在声明

指代变量为指针变量

int * p;

*符号,在使用

取指针指向内存区域的数值

*p 表示数字10

&符号

取内存地址

&num,取num变量内存地址

野指针

野指针:被声明但未初始化(赋值)的指针。这个指针会指向随机的内存空间,可能导致未知问题。

野指针:仅声明未赋值的指针。不可应用,因为其指向的内存区域是随机的、未知的。

普通变量是对数值进行操作,不会有安全问题,所以没有“野变量”一说。

指针对内存直接操作,所以一旦声明但未赋值,就是“野指针”,一旦使用,后果不可预料。

int * p;    // 声明指针(分配了8字节空间), p是野指针因为未被赋值
*p = 10;    // 将10赋予指针p所指向的空间

     //*p = 10; 是向未知的、随机的4字节内存区域,修改存储值为10

空指针

为避免野指针,应养成良好的变成习惯,及时初始化,或将指针置为空指针更为安全。

int* p = NULL;
int* p = nullptr;
•NULL是C++内置的宏,表示”空、什么都没有”的含义,其本质是0
•nullptr是C++11标准引入的关键字,表示指针为空

空指针,只在需要指针,但需要延迟赋值的场景下作为过渡使用。

空指针:将指针赋值为“空”:NULL、nullptr,避免指向具体内存,更加安全

空指针也不是正常的指针,只是过渡,指针最终要给与具体值,否则就不要用指针。

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值