指针值(NULL
或不是)需要一些空间来存储和表示(大多数现代桌面系统上有4到8个字节,但根据架构可能会有一些奇怪的大小).
指针值NULL
表示明确定义的"无处"; 它是一个无效的指针值,保证比较不等于内存中任何对象或函数的地址.宏NULL
被设置为空指针常量,这是一个零值整数表达式(裸0
,或(void *) 0
,或其他一些计算结果的表达式0
).
在编译代码之后,空指针常量将替换为该特定平台的适当空指针值(可以是0x00000000
,或0xFFFFFFFF
,或0xDEADBEEF
,或其他一些值).
任何指针值(包括NULL
)都需要一小段系统相关的空间来表达或存储.
对于指向对象(如果有的话)可能需要的任何空间,这是一个完全独立的考虑因素.甲NULL
指针被保证不指向任何对象,但非NULL
指针不能保证指向的对象.另一方面,可能有多个指向同一对象的指针.
在NULL
有意使用指针的情况下,它通常用于显式表示无效指针,因为您无法从任何其他指针值判断该指针是否有效.这可能很有用,例如,标记未知长度指针数组末尾的标记值,或作为指示失败的函数返回值.后者的规范示例可能是malloc()
,NULL
如果无法分配请求的空间,则返回.
归档时间: |
|
查看次数: |
1320 次 |
最近记录: |