野指针与空指针的异同

1、什么是野指针

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

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

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

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

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

野指针:

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

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

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

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

空指针:

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

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

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

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

3、传值和传地址的区别

1. 传值的特点:

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

2. 传地址的特点:

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

3. 效率:

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

4. 影响范围:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值