鱼C论坛

 找回密码
 立即注册
查看: 1593|回复: 0

[技术交流] S1E25void指针和NULL指针

[复制链接]
发表于 2017-7-30 15:20:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Kotori 于 2017-7-30 15:19 编辑

void指针和NULL指针
  1>void指针
        void字面意思为‘虚空’,这是一种特殊的指针,也称为通用指针。即可指向任意类型的数据。
  1. int a = 1;
  2. void *p;
  3. p = &a;
  4. printf("%d",*(int *)p);        //这里对类型进行强制转换
复制代码
   
        注意:1)不存在void类型的变量,只有指针,定义void类型的变量会报错;
                  2)建议在解引用void指针指向的内容时加上强制转换,以更好地知道编程的意图;
                  3)void指针在执行自增代码时,只是单纯移向下一个地址(即地址+1),并不会识别出数据类型进行合适的偏移!!!
  2>NULL指针
        在C语言定义指向0的指针为空指针,代码如下:
  1. #define NULL ((void *) 0)
复制代码

        空指针的出现解决了悬空指针(未被初始化的指针)的问题。当指针被定义时,如果没对其进行初始化,指针就会指向一个随机的地址。这对安全问题造成了一定的影响。
  1. void *p = NULL;
复制代码

        通过在初始化时,把暂时用不到的指针指向NULL,就可以避免这类问题,同时减少可能出现的未知错误。
        注意:1)未被初始化使用的指针先指向NULL;
                  2)在解引用时先检查指针是否指向NULL,因为解引用NULL指针会报错。

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 05:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表