c++ 判断指针的值为空_C标准中关于空指针让你脑洞大开的那些事

3ab870c73105cc4eed8552d244446b2f.png

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哦!

942912f97ec3d3ecb017747482283a54.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值