void指针和NULL指针

本文深入探讨了C/C++中Void指针和NULL指针的特性与应用。Void指针作为通用指针,可指向任意类型数据,但无法直接解引用,需通过强制类型转换。NULL指针用于表示未指向任何数据的空指针状态,有助于避免野指针引发的运行错误。

Void指针和NULL指针

Void指针:

Void指针我们称之为通用指针,就是可以指向任意类型的数据。也就是说,任何类型的指针都可以赋值给Void指针。

举例:

#include<stdio.h>
int main ()
{
    int num = 666;//这里定义为整型 
    int *pi = &num;
    char *ps = "I love XYT";//这里为字符型 
    void *pv;
    
    pv = pi;//将整型赋值void指针 
    printf("pi:%p, pv:%p\n", pi, pv);
    
    pv = ps; //将字符型赋值给void指针 
    printf("ps:%p, pv:%p\n", ps, pv);
    //最后的结果是两个地址一样,可以正常赋值过去 
    
    return 0;
 } 

无类型指针没办法进行解引用,所以可以强制转换

例子:

#include<stdio.h>
int main ()
{
    int num = 520;//这里定义为整型 
    int *pi = &num;
    char *ps = "I love XYT";//这里为字符型 
    void *pv;
    
    pv = pi; 
    printf("pi:%p, pv:%p\n", pi, pv);
    printf("pv:%d\n", *(int *)pv);//这里为强制转换 
    
    pv = ps; 
    printf("ps:%p, pv:%p\n", ps, pv);
    rintf("pv:%d\n", (char *)pv);//这里为强制转换,没有*是因为打印字符串不需要 
    
    return 0;
 } 

需要注意:使用void指针,不到必要的时候,不要乱用

NULL指针

如果一个指针不指向任何数据我们称之为空指针,也叫NULL指针。
为什么要用到NULL指针呢,当你还不清楚要将指针初始化为什么地址时,请将它初始化为NULL;在对指针进行解引用时,先检查该指针是否为NULL指针(用if),

#include<stdio.h>
int main ()
{
    int *p1;
    int *p2 = NULL;
    
    printf("%d\n" *p1); 
    printf("%d\n" *p2); 
    
    return 0;
 }

p1这种指针没有什么具体数据的,会乱指一气,我们称为野指针或者迷途指针
若对其解引用,如果地址是合法的,就会得到随机的值
使用NULL指针的话,就会很好解决这个问题
对NULL指针进行解引用的时候,就会出现非法警告

转载于:https://www.cnblogs.com/zw431387/p/10325069.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值