深度理解指针(2)



🎁个人主页: 工藤新一¹

🔍系列专栏: C++面向对象(类和对象篇)

🌟心中的天空之城,终会照亮我前方的路

🎉欢迎大家点赞👍评论📝收藏⭐文章


深入理解指针(2)

文章目录

一、常量 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断言


🌟 各位看官好 ,我是工藤新一¹呀~

🌈 愿各位心中所想,终有所致!

相关推荐
kloc33 分钟前
聊天室项目入口网关子服务的实现
linux·c++
csdn_aspnet4 小时前
C++ 3个有序点的方向(Orientation of 3 ordered points)
c++·算法
小七在进步5 小时前
string的使用(2)
c++
青少儿编程课堂6 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
wo_jack7 小时前
C++ 入门笔记(十七):list 入门 —— 为什么 list 不能 sort?
数据结构·c++·面试·stl·list
青少儿编程课堂8 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析
c++·python·算法·bfs·信息学竞赛
草莓熊Lotso9 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
David猪大卫1 天前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger1 天前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习
努力努力再努力wz1 天前
【Lua 进阶系列】从 C++ 对象到 Lua 变量:一文理解 userdata、Lua 栈与元表绑定机制
c++·junit·lua