C++关于NULL、0、nullptr

2016-07-17 星期日 天气☀ 01:07:04

一 关于NULL、0、nullptr

1 在C语言中NULL被定义为:一个void* 指针,指向的地址为0。

#define NULL ((void *)0)

所以在C语言中我们通常会写出如下语句

int *i = NULL;
foo_t *f = NULL;

2 而在C++中,NULL会被定义为0

#ifndef __cplusplus
#define NULL ((void *)0)
#else   /* C++ */
#define NULL 0
#endif 

3 C++11引入了nullptr 来表示空指针

二 在C++中使用NULL的风险

//func1
int mycall(char *a, char *b)
{
    cout<<"char pointer!"<

三 总结

在写纯C时
(1) 给指针变量赋空指针可以使用NULL
在写C++
(1) 不要使用NULL, 如果真要使用那就写个0,或者自己定义一个宏 #define iZERO 0
(2) 使用空指针时请用nullptr

你可能感兴趣的:(C++关于NULL、0、nullptr)