C++指针基础

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

其载体为:指针变量(用于记录地址)

64位系统中指针变量占用8字节(byte),32位系统占用4字节

int num =10;

int * p;  // 声明一个指针变量

p = & num ; //取到num的地址,给指针赋值

cout << p ; //输出的Num的地址

cout << * p ; //输出的num 的值

注意:指针变量的类型取决于所存放的地址指向的数据类型,此处为int

*号有两个含义:
        声明时*p表示p是一个指针变量

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

* p = 20 ; //等同于num = 20 ;

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

若声明了一个野指针:int * p ; (未赋值)

则该指针会指向位置的随机的4字节区域(4字节是因为定义p为指向的int数据)

如果此时随机指向的内存空间中存在上个程序遗留下来的脏数据、或价值数据

若此时再随意更改数据如:*p = 10:

则会引起系统紊乱或者软件紊乱的可能性

空指针:

为了避免野指针,应该对声明的指针及时的初始化,置为空指针

int * p = NULL; //NULL是C++的内置宏,本质是0

int  * p = Nullptr;  

空指针是一种垃圾代码作为过渡使用,应尽快使用

空指针和野指针都会编译错误。但是相对于野指针,空指针不会带来安全隐患。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值