C语言链表中head==NULL指的是指针域为空还是什么?

Python012

C语言链表中head==NULL指的是指针域为空还是什么?,第1张

表示整个链表为空,没有任何成员元素。

head等于null,表示head无任何数据,没有数据和next指针

head

==

null和head->next

=

null是不等价的,后者表示存在head数据,但链表只有head一个节点数据。

struct

Telphone

/*自定义多数据域的链表*/

{

char

name[20]

char

address[20]

char

zip[20]

char

telphone[20]

struct

Telphone

*next

/*链表指针域设定*/

}

typedef

struct

Telphone

TEL

//自定义

TEL

*head=NULL

head=(TEL

*)malloc(sizeof(TEL))

是否用mallo函数分配内存后head就变为了名叫head的节点了。

NULL 就是一个特殊的指针值, 其实本质是一个宏

#define NULL (void *)0

也就是0值, 强制转成了指针。

用来表示一个指针非法。 所以在初始化的时候经常用NULL来初始化。

由于是非法指针, 所以对这个指针取值(*操作)会导致程序崩溃。 必须要先指向一个有效空间才可以。

意思是一样,都是用于判断是否为null(空),但是假如你用不同的输入在计算机上,null== a 识别度更高,编写代码中null==的表示更加规范,由于a=null是一个恒为真的的等式,所以为防止输入错误,通用为null==。

拓展资料

NULL本意是“空的”;元素只有“零”的意思。计算机中通常表示空值,无结果,或是空集合。在ASCII码的第一个字符是NULL,它的数值是0,占用1字节C语言把它作为字符串的最后一个字符,以表示字符串到此结束"\0"。

NULL指针是一个无类型指针,并且值为0。一个指针,拥有2个属性--地址值和指针类型。两者的作用是:地址值标识变量的首地址(32位系统下指针的地址值占4字节)。

指针类型告诉编译器,应该怎样进行接下来的数据访问(int型数组和float型数组是不同的;数组访问与结构体访问也是不同的;等等)。

NULL的出现是一种约定俗成,事实上它不是C语言中的关键字;把一个指针赋值为NULL,通常的说法是“将指针悬空”。

指针就无法再进行任何数据访问了。编程工作中有一类比较容易犯的错误--指针地址未进行正确的更新赋值就加以使用,这往往会造成很严重的后果(对内存区进行错误的涂抹)。所以一个良好的习惯是,当一个指针的工作稍事休息,先把它赋值为NULL,待到再度使用时,重新对其赋值以及进行指针类型转化。