请问大神们,C语言中的NULL和0有啥区别啊?

Python012

请问大神们,C语言中的NULL和0有啥区别啊?,第1张

从值来说的话,都是0值。这俩最根本的区别类型不同:NULL 是 void* 类型的0,而0是int类型的0。

在C语言中值是值,类型是类型,你可以把一个值当做一个类型来处理,也可以当做另外一个类型来处理。比如:值1001,你可以把它当做int类型来处理,那么他就可以进行数学运算符了,你也可以把它当做int*来对待,那么 1001 就是一个地址,可以进行解引用之类的操作了。

没事可以多看看网上的免费视频,比如黑马程序员之类,多掌握基础知识。

NULL与0的区别:

还是让我们看一下windef.h中NULL的定义

#ifndef

NULL

#ifdef

__cplusplus//这个是指示是用C++来编译程序

#define

NULL

0

//用NULL这个字符代表0

#else

#define

NULL

((void

*)0)

#endif

#endif

所以说:它们没有区别,只不过在C里面会做一个强制类型转换。

C语言的0和NULL的确是相同的,NULL其实是一个#define定义,在每一种C语言编译器中都有头文件来定义NULL这个符号,NULL的定义类似于这样:

#define NULL 0

所以空指针0和空指针NULL是一回事。