美文网首页
2020-08-08 C和C++中NULL的区别

2020-08-08 C和C++中NULL的区别

作者: 敉霞 | 来源:发表于2020-08-08 14:25 被阅读0次

    stddef.h或者vcruntime.h里面是这么定义的

    #if defined(__cplusplus)
    #define NULL 0
    #else
    #define NULL ((void *)0)
    #endif
    

    在C中NULL可以被定义为0或者0L(32位和64位的区别),或者直接就是由0或者0L转成的成void*。
    在C++中,一个指向空的指针要么是整形0,要么是std::nullptr_t。

    歧义总是出现在函数重载的时候,比如下面的两个重载函数,如果传NULL就相当于传0,会调用第一个print,所以高版本c++引入了nullptr的概念,建议有nullptr的不用在用NULL了。

    void Print(int a)
    {
        cout << "int" << endl;
        cout << a << endl;
    }
    
    void Print(char* a)
    {
        if (nullptr == NULL)
        {
            cout << "true" << endl;
        }
        cout << "char" << endl;
        cout << &a << endl;
    }
    

    相关文章

      网友评论

          本文标题:2020-08-08 C和C++中NULL的区别

          本文链接:https://www.haomeiwen.com/subject/vzqhdktx.html