首页 百科知识 空指针不是空字符串

空指针不是空字符串

时间:2022-09-22 百科知识 版权反馈
【摘要】:将一个整数转换为一个指针的结果是实现相关的,除了一个例外。这个值通常类似这样定义:但其效果是相同的。要记住的一个重要的事情是,当用0作为指针时它决不能被解除引用。换句话说,当你将0赋给一个指针变量后,你就不能访问它所指向的内存。

4.7 指针不是空字符串

    将一个整数转换为一个指针的结果是实现相关的(implementation-dependent),除了一个例外。这个例外是常数0,它可以保证被转换为一个与其它任何有效指针都不相等的指针。这个值通常类似这样定义:

 

#define NULL 0

 

但其效果是相同的。要记住的一个重要的事情是,当用0作为指针时它决不能被解除引用。换句话说,当你将0赋给一个指针变量后,你就不能访问它所指向的内存。不能这样写:

 

if(p == (char *)0) ...

 

也不能这样写:

 

if(strcmp(p, (char *)0) == 0) ...

 

因为strcmp()总是通过其参数来查看内存地址的。

 

    如果p是一个空指针,这样写也是无效的:

 

printf(p);

 

 

printf("%s", p);

 

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈