zoukankan      html  css  js  c++  java
  • 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
    ", pi, pv);
    	
    	pv = ps; //将字符型赋值给void指针 
    	printf("ps:%p, pv:%p
    ", 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
    ", pi, pv);
    	printf("pv:%d
    ", *(int *)pv);//这里为强制转换 
    	
    	pv = ps; 
    	printf("ps:%p, pv:%p
    ", ps, pv);
    	rintf("pv:%d
    ", (char *)pv);//这里为强制转换,没有*是因为打印字符串不需要 
    	
    	return 0;
     } 
    

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

    NULL指针

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

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

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

  • 相关阅读:
    linux Centos防火墙工具iptables的使用
    SpringBoot中的注解分析
    context:property-placeholder
    HTTPS(SSL)证书下载及配置
    Dubbo之多注册中心以及zookepeer服务的查看
    重要事情老是忘?别急~看这里
    重要事情老是忘?别急~看这里
    多态
    抽象类,接口_05
    常用类
  • 原文地址:https://www.cnblogs.com/zw431387/p/10325069.html
Copyright © 2011-2022 走看看