🎁个人主页: 工藤新一¹
🔍系列专栏: C++面向对象(类和对象篇)
🌟心中的天空之城,终会照亮我前方的路
🎉欢迎大家点赞👍评论📝收藏⭐文章
深入理解指针(2)
文章目录
- 深入理解指针(2)
-
- [一、常量 const](#一、常量 const)
-
- [1.1 const 修饰变量](#1.1 const 修饰变量)
- [1.2 const 修饰指针变量](#1.2 const 修饰指针变量)
- 二、野指针
- 三、assert断言
一、常量 const
1.1 const 修饰变量
- 在 C语言 中,被
const
修饰的变量是常变量(常变量,是变量,但具有常属性 - 即不变的属性) - 在 C++ 中,被
const
修饰的变量就是变量

因此,接下来让我们通过对比来展示 C 语言 与 C++ 中迥异的地方



1.2 const 修饰指针变量
- 使用
const
约束指针的行为


二、野指针
概念:野指针
就是指针指向的位置是不可知的(随机的、不正确的,没有明确限制的)
2.1野指针的成因
- 指针未初始化
将 p
中的随机值当作地址,在内存中随机找了一块空间(且这块空间不属于当前程序),存放数据 20
--- 非法访问内存空间

- 指针越界访问
p
指向不属于自己的空间,并对这段空间进行了访问操作 --- 非法访问内存空间

- 悬垂指针
指针指向的空间(如:局部属性)被释放,局部变量进入函数栈帧开始,走出函数栈帧销毁、生命周期结束


总结:指针指向的内存空间不属于当前程序,那么这个指针就是 野指针
2.2如何规避野指针
2.2.1指针的初始化

2.2.2小心指针越界
一个程序向内存申请了哪些空间,通过指针也就只能访问哪些空间,不能超出范围访问,超出了就是越界访问

2.2.3指针及时置空,检查有效性
指针变量不在使用时,应及时置为 NULL
,指针使用之前检查有效性。当指针变量指向⼀块区域的时候,我们可以通过指针访问该区域,后期不再使⽤这个指针访问空间的 时候,我们可以把该指针置为 NULL
。因为约定俗成的⼀个规则就是:只要是 NULL指针
就不去访问, 同时使⽤指针之前可以判断指针是否为 NULL
2.2.4避免返回局部变量的地址
三、assert断言


🌟 各位看官好 ,我是工藤新一¹呀~
🌈 愿各位心中所想,终有所致!