关于空指针在C++中的表示!

来源:百度知道 编辑:UC知道 时间:2024/05/28 06:42:01
我看过几本书都是翻译过来的!!书上在写到空指针时都用0而不用NULL!有一本则明确讲到C++程序员不用NULL而用0 …真的吗?为什么?这些书都是计算机科学丛书!

空指针就是指向的地址为空。
至于0和NULL其实都可以用的。风格问题

无所谓,C一般用NULL,C++一般用0.
习惯问题

0和NULL没有区别,NULL实际上是在头文件中用#define NULL 0定义的,所以写NULL和写0,是一样的

这个有很多原因哈。。

首先,如果你包含了系统的头文件,那么我们当然推荐使用NULL来表示空指针,虽然NULL就是0,0就是NULL,但是NULL用来表示空指针可读性好得多。。

另外主要存在是你没有包含系统头文件的时候,又需要表示空指针,这个时候没有提前定义的NULL来用,而自己定义的话又怕和系统的冲突,所以只好退一步而求其次,用0了。
比如下面这个头文件:
namespace db
{
// 基本实现细节
namespace detail
{
// Base_Buffer
template < typename _Ty >
class Base_Buffer : public Noncopyable
{
public:
Base_Buffer( unsigned uCount ):m_pTmp(0),m_uCount( uCount )
{
if( 0 != uCount )
{
m_pTmp = new _Ty[uCount];
}
}
~Base_Buffer()
{
if( 0 != m_pTmp )
{
delete []m_pTmp;
m_pTmp = 0;
}
}

_Ty* GetBufPtr()
{
assert( 0 != m_pTmp );

return m_pTmp;
}