C标准中关于空指针的那些事

简介:


1 C标准不保证用所有二进制位都为0的变量来表示空指针,但它保证空指针与任何对象或函数的指针都不相等,取地址操作符&永远也不会返回空指针;

2 C标准称在指针上下文中的“值为0的整形常量表达式”会在编译时转换为空指针;

3 C标准中,在使用非零位模式作为空指针的内部表示的机器上,NULL和其他机器一样,定义为0或(void*)0,编译器在指针上下文看到的未加修饰的0都会被生成正确的空指针;

4 C程序猿或媛应该明白,在指针上下文中NULL和0是完全等价的;

5 C确保源代码中的0(用于指针上下文)会生成空指针;

6 malloc(0)可以返回NULL或者指向0个字节的指针;

7 空指针和空指针常量是2码事:前者是将后者赋给一个指针类型的结果,且不一定二进制位为全0,而后者2进制为一定为全0,即等于NULL;

8 任何空指针相互比较或和NULL比较结果一定为true,任何空指针和非空指针比较结果一定为false;

9 C中还有一种字面常量NUL,它的确是全0哦!

相关文章
|
1月前
|
存储 程序员 C++
在C++编程语言中指针的作用类型
在C++编程语言中指针的作用类型
14 0
|
7月前
|
设计模式 运维 Java
开发中造成空指针的常见写法,如何预防!
开发中造成空指针的常见写法,如何预防!
40 0
|
1月前
|
安全 程序员 编译器
了解野指针与assert断言 拿捏指针的使用!
了解野指针与assert断言 拿捏指针的使用!
|
1月前
|
安全 程序员 编译器
[C语言]指针进阶之野指针与assert断言
[C语言]指针进阶之野指针与assert断言
|
1月前
|
算法 编译器 C语言
C语言assert断言详解指针(3)
C语言assert断言详解指针(3)
|
6月前
|
存储 C语言
C语言之指针的含义,指针类型的定义及使用方法,野指针的定义,以及原因,如何避免野指针
C语言之指针的含义,指针类型的定义及使用方法,野指针的定义,以及原因,如何避免野指针
|
8月前
|
C语言
C语言之指针和函数的关系一(未完)
C语言之指针和函数的关系一(未完)
39 0
|
11月前
|
安全 Windows
因为你安全了,所以你危险了——空指针引用
1.本文章属于系列文章《因为你安全了,所以你危险了》中的第一篇 2.本篇文章的作者是Gcow安全团队复眼小组的晏子霜,未经允许禁止转载 3.本篇文章需要你对GDI子系统有一定了解,最好阅读过部分关于Windows显示驱动,打印机驱动,以及调色板这一块的源码.并对DDI函数有一定了解,以及编写Windows Kernel Exploit的能力
|
11月前
|
存储 Web App开发 安全
检查 malloc 函数返回内容的四个理由
检查 malloc 函数返回内容的四个理由