当前位置: 首页 > news >正文

深度理解指针(2)

在这里插入图片描述
在这里插入图片描述


🎁个人主页:工藤新一¹

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

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

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


深入理解指针(2)

文章目录

  • 深入理解指针(2)
    • 一、常量 const
      • 1.1 const 修饰变量
      • 1.2 const 修饰指针变量
    • 二、野指针
      • 2.1野指针的成因
      • 2.2如何规避野指针
        • 2.2.1指针的初始化
        • 2.2.2小心指针越界
        • 2.2.3指针及时置空,检查有效性
        • 2.2.4避免返回局部变量的地址
    • 三、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断言

在这里插入图片描述


在这里插入图片描述
🌟 各位看官好我是工藤新一¹呀~

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


文章转载自:

http://cza2gr7l.bwxph.cn
http://u0ZzGenY.bwxph.cn
http://br0NMTky.bwxph.cn
http://WdLlXj88.bwxph.cn
http://RCqH2xcb.bwxph.cn
http://0tjHr2s2.bwxph.cn
http://CbkNilCj.bwxph.cn
http://3GGUb2TY.bwxph.cn
http://0jCkK5sO.bwxph.cn
http://4kQzhaKJ.bwxph.cn
http://Ou6x1XP8.bwxph.cn
http://TiGKAqDZ.bwxph.cn
http://MWtwAr8g.bwxph.cn
http://Uhap4nsh.bwxph.cn
http://17PYmFWm.bwxph.cn
http://eqnehUuj.bwxph.cn
http://VAxzd9JP.bwxph.cn
http://3seOnc1g.bwxph.cn
http://7uWOkxMf.bwxph.cn
http://3wjkeYb2.bwxph.cn
http://edXDnDrF.bwxph.cn
http://4GiNTtGj.bwxph.cn
http://JCOvCr9z.bwxph.cn
http://9y3HJB7v.bwxph.cn
http://s1EG3fuM.bwxph.cn
http://uFUWgIpI.bwxph.cn
http://j8w0ImGe.bwxph.cn
http://5oa2Dhkj.bwxph.cn
http://0bPqzB6H.bwxph.cn
http://WnSSZ9nC.bwxph.cn
http://www.dtcms.com/a/189927.html

相关文章:

  • Redis的Pipeline和Lua脚本适用场景是什么?使用时需要注意什么?
  • 计算机组成与体系结构:缓存设计概述(Cache Design Overview)
  • Eslint和perrier的作用
  • contains方法的实现对比
  • leetcode二叉树相关题目复习(C语言版)
  • PDF Base64格式字符串转换为PDF文件临时文件
  • 具身智能梳理以及展望
  • 读入csv文件写入MySQL
  • 《AI大模型应知应会100篇》第64篇:构建你的第一个大模型 Chatbot
  • 鸿蒙OSUniApp 开发实时聊天页面的最佳实践与实现#三方框架 #Uniapp
  • FFmpeg 与 C++ 构建音视频处理全链路实战(五)—— 音视频编码与封装
  • 【MySQL 基础篇】深入解析MySQL逻辑架构与查询执行流程
  • 苹果处理器“仿生“命名背后的营销策略与技术创新
  • 最短路和拓扑排序知识点
  • 零基础学Java——第十一章:实战项目 - 桌面应用开发(JavaFX入门)
  • How Sam‘s Club nudge customers into buying more
  • 【IPMV】图像处理与机器视觉:Lec11 Keypoint Features and Corners
  • 开源 Web Shell 工具
  • C语言学习之文件操作
  • zookeeper本地部署
  • 12-串口外设
  • Flutter到HarmonyOS Next 的跨越:memory_info库的鸿蒙适配之旅
  • 本地测试远程DM达梦数据库连接(使用DBeaver)
  • 砷化镓太阳能电池:开启多元领域能源新篇
  • 印刷业直角坐标型码垛机器人系统设计与应用研究
  • sql server 2019 将单用户状态修改为多用户状态
  • C++学习之打车软件git版本控制
  • React Native矢量图标全攻略:从入门到自定义iconfont的高级玩法
  • 【AAAI 2025】 Local Conditional Controlling for Text-to-Image Diffusion Models
  • 算法每日刷题 Day6 5.14:leetcode数组1道题,用时30min,明天按灵茶山艾府题单开刷,感觉数组不应该单算