prev up next   top/contents search

comp.lang.c FAQ 列表· 第 5.16 题

考虑到围绕空指针的所有混乱,是不是只要要求它们在内部用零表示就更简单了?


一些实现会自然地用特殊的、非零的位模式来表示空指针,特别是当可以安排好无意中使用这些值会触发自动硬件陷阱的时候。要求空指针在内部表示为 0,因此不允许使用特殊的、非零值,这将是一个不幸的倒退,因为捕获导致无效访问的错误是一件好事。

此外,这样的要求到底能实现什么呢?对空指针的正确理解不需要知道内部表示,无论是零还是非零。假设空指针在内部为零,并不会让任何代码更容易编写(除了某种不明智地使用calloc;参见问题 7.31)。已知的内部指针为零不会减少函数调用中强制类型转换的需要,因为指针的大小可能仍然与int的不同。(如果像问题 5.14 中提到的那样,使用“nil”来请求空指针,那么就不会产生假设内部为零表示的冲动。)


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管