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

野指针与空指针的异同

1、什么是野指针

在了解什么是野指针之前我们要知道什么是指针即指针的定义是什么。

指针:是一种特殊的变量类型,它存储的是一个内存地址,该地址指向另一个变量的位置。可以通过指针来间接访问和修改该地址所指向的变量的值。

PS:请注意指针在进行使用的时候为了防止变成野指针必须要进行初始化。

野指针:是指针,但是指向的空间是被释放的空间、被释放的指针和没有初始化的指针就是野指针。

2、野指针与空指针的区别

野指针:

                1、是指向被释放的空间的指针,里面存储的地址是有效的地址,只不过里面不能通过这个地址去进行访问。

                2、野指针指向的内存地址是未知或无效的,可能导致程序错误或崩溃。

                3、野指针就像是一条疯狗一样非常的危险,使用野指针可能导致不可预知的结果。

                4、很难通过assert断言检测出来,要自己通过调试一个个的试出来。

空指针:

                1、空指针指向的空间的地址(地址本质也是一串数字)是0。

                2、空指针指向的对象是具体的虽然指向对象的地址是0,表示的是不指向有效的对象。

                3、空指针常被用来表示一个指针尚未指向有效的对象,可以用于判断指针是否已经被初始化或者指向了有效的内存地址。

                4、直接通过assert调试即可或者通过if的判断也能直接知道。

3、传值和传地址的区别

1. 传值的特点:

                传值是指将实际参数的值复制一份,然后再传递给函数的形式参数。在函数内部,对形式参数的修改不会影响到实际参数的值。传值方式适用于参数较小且不需要在函数内部修改的情况。

2. 传地址的特点:

                传地址是指将实际参数的地址传递给函数的形式参数。在函数内部,形式参数指向了实际参数所在的内存地址,可以直接对实际参数进行修改。传地址方式适用于参数较大或需要在函数内部修改的情况。

3. 效率:

                传值需要将参数的值复制一份,因此在内存和时间上会有一定的开销;而传地址只需要传递一个地址,可以节省内存和时间开销。

4. 影响范围:

                传值只影响函数内部的形式参数,不会改变实际参数的值;而传地址可以在函数内部修改实际参数的值,会影响到函数外部的实际参数。

总之,传值和传地址是函数调用中传递参数的两种方式。传值是将参数的值复制一份传递给函数,不会改变实际参数的值;传地址是将参数的地址传递给函数,可以在函数内部直接修改实际参数的值。选择使用哪种方式取决于参数的大小、是否需要在函数内部修改以及对性能的要求。


http://www.mrgr.cn/news/25674.html

相关文章:

  • 队列的基本概念及顺序实现
  • 【2025】基于python的网上商城比价系统、智能商城比价系统、电商比价系统、智能商城比价系统(源码+文档+解答)
  • [基于 Vue CLI 5 + Vue 3 + Ant Design Vue 4 搭建项目] 09 集成 Ant Design Vue
  • 45. 跳跃游戏 II
  • D2307 Zblog 的CDNfly|CloudFlare全能CDN自动刷新缓存插件_自动清理_适配优化2.1.0版本
  • [项目][WebServer][Util类]详细讲解
  • 腾讯云、阿里云、华为云优惠券领取、查看、使用教程分享
  • PCL 读取STL文件转换为点云
  • odoo14 | 报错:Database backup error: Access Denied
  • MySQL 存储过程:强大的数据库功能利器
  • C++缺省参数
  • 数学基础 -- 线性代数之特征值与特征向量深入解析
  • 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明)
  • 数据库锁有哪些?什么是死锁?
  • brew install node提示:Error: No such keg: /usr/local/Cellar/node
  • Linux 驱动编写框架 并编译导入开发板
  • Leetcode 第 138 场双周赛题解
  • 分类预测|基于改进的灰狼IGWO优化支持向量机SVM的数据分类预测matlab程序 改进策略:Cat混沌与高斯变异
  • 阿里达摩院:FunASR - onnxruntime 部署
  • 单链表的建立