搜索
写经验 领红包
 > 社会

c语言中空指针和ull关系是什么意思啊(c语言中空指针用什么表示)

导语:C语言中空指针和NULL关系是什么?

空指针概念

在C语言编程中定义了一个特殊的指针值,它可以确保不会指向这种类型的任何一个对象或者是函数,在源码中用来表示空指针的空指针常量使用整数0。在很多机器上会采用很多位置0 来表示空指针。

空指针和空指针常量

在语言定义中有说明,每一种指针类型都会有一个特殊的指针—空指针,它与同类型的其他指针不同,空指针不会指向任何的地方,它也不是任何对象或函数的地址,我们申请堆空间的时候malloc失败的时候回返回一个空指针,这是他的一个典型用法,表示未分配或者是尚未指向任何地方。我们怎么获取一个空指针呢,根据语言的定义在指针上下文中的“值为0的整型常量表达式”在编译的时候会转换为空指针。

NULL宏

为了让我们程序中的空指针使用更加的明确,特地定义了一个预处理宏NULL,值为空指针常量。

NULL是什么?是怎么定义的?

作为一种编程习惯和风格,很多人不愿意在申请指针变量的时候初始化为0,因为我们的0还会表示成其他的类型,比如整型,浮点型等等,因此未来避免混淆,指针初始化我们就使用NULL,其他的变量我们可以使用0,但是我们要知道在编译器处理的时候会把所有的NULL 还原为0。我们未加修饰的NULL和未加的0是完全等价的。

使用规则

我们使用的时候与要记住两条简单的规则

(1)、在源码中需要使用空指针常量时,用“0”或NULL;

(2)、如果函数调用0或者NULL作为参数,需要把它转换函数所需要的类型。

地址0上有什么?

我们要注意的是我们不能将空指针当做是指向0的指针,但是如果我们访问地址0的时候就需要考虑空指针的影响了。

不管位置0上有什么内容都是和我们机器相关的,我们可以使用一些手段去访问到它,

接下来我说一些自己想到的办法有兴趣的可以去试试。

我们可以把一个指针赋予0。也可以声明一个整型变量,把变量的值赋0,然后再用一个指针指向这个整型,我觉得这样可能会有效。

总结

有关空指针的疑惑如此之多和众多不一样的看法,我可能也没有很好地去描述出来,但是学到关于空指针这块知识点的时候还是比较感兴趣的,所以写了这篇,可能没总结到位,如果你很幸运对指针有很清楚的了解,或者是觉得今天的文章太繁琐,你可以忽略过去。

本文内容由小迪整理编辑!