美文网首页
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;
}

相关文章

  • 己亥年-第一篇随笔

    谈一谈null在C和C++中的区别: C中NULL是指向0地址的指针常量(void *)0 C++中则是定义为整数...

  • FFmpeg视频播放

    首先记录一下C++中的NULL、0、nullptr的区别 NULL在C++中就是0,这是因为在C++中void* ...

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

    stddef.h或者vcruntime.h里面是这么定义的 在C中NULL可以被定义为0或者0L(32位和64位的...

  • C++中NULL和nullptr的区别

    前言 C和C++的变量名是对大小写敏感的,因此NULL和null并不是一回事,前者是C/C++中的系统关键字,nu...

  • C++中容易被忽略的基础知识

    const和define的区别C++中static关键字的总结C++中的构造函数及深拷贝浅拷贝c++基础之引用和指...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • C++ 面试基础之一

    C/C++的区别和联系 联系 C++是C的超集,兼容C的大部分的语法。 区别 C是面向过程的语言,C++是面向对象...

  • C++面向对象-类

    类 C++中可以使用struct和class来定义一个类,在C++中,struct和class的区别是struct...

  • c++基础—引用和函数

    c和c++的区别 1.c++中可以混编c代码,也即是说可以在c++中写c代码,也可以调用 2.c++面向对象(ja...

  • qt QString 和 C++基本类型转换

    QString 和 C++基本类型转换 char* 和 QStringchar* szpData = NULL;...

网友评论

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

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