欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 野指针与空指针的异同

野指针与空指针的异同

2025/2/23 1:39:16 来源:https://blog.csdn.net/zt3445164952/article/details/142168333  浏览:    关键词:野指针与空指针的异同

1、什么是野指针

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

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

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

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

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

野指针:

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

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

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

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

空指针:

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

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

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

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

3、传值和传地址的区别

1. 传值的特点:

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

2. 传地址的特点:

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

3. 效率:

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

4. 影响范围:

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词