您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言中的NULL总是被定义为0吗?NULL总是等于0吗?

时间:12-30来源:作者:点击数:

NULL总是被定义为0吗?

NULL不是被定义为o,就是被定义为(void *)0,这两种值几乎是相同的。当程序中需要一个指针时(尽管编译程序并不是总能指示什么时候需要一个指针),一个纯粹的零或者一个void指针都能自动被转换成所需的任何类型的指针。

NULL总是等于0吗?

对这个问题的回答与“等于”所指的意思有关。如果你是指“与。比较的结果为相等”,例如:

    if(/*  ...  */)
    {   
        p=NULL;
    }   
    else   
    {
        p=/* something else */;
    }
    /*  ...  */
    if(p==0)

那么NULL确实总是等于0,这也就是空指针定义的本质所在。

如果你是指“其存储方式和整型值。相同”,那么答案是“不”。NULL并不必须被存为一个整型值0,尽管这是NULL最常见的存储方式。在有些计算机中,NULL会被存成另外一些形式。

如果你想知道NULL是否被存为一个整型值0,你可以(并且只能)通过调试程序来查看空指针的值,或者通过程序直接将空指针的值打印出来(如果你将一个空指针强制转换成整类型,那么你所看到的很可能就是一个非零值)。 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门