📄 confusion.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"><!-- This collection of hypertext pages is Copyright 1995-2005 by Steve Summit. --><!-- Content from the book "C Programming FAQs: Frequently Asked Questions" --><!-- (Addison-Wesley, 1995, ISBN 0-201-84519-9) is made available here by --><!-- permission of the author and the publisher as a service to the community. --><!-- It is intended to complement the use of the published text --><!-- and is protected by international copyright laws. --><!-- The on-line content may be accessed freely for personal use --><!-- but may not be published or retransmitted without explicit permission. --><!-- --><!-- this page built Sat Dec 24 21:47:45 2005 by faqproc version 2.7 --><!-- from source file null.sgml dated Wed Dec 21 13:03:25 2005 --><!-- corresponding to FAQ list version 4.0 --><html><!-- Mirrored from c-faq.com/null/confusion.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:58:48 GMT --><head><meta name=GENERATOR content="faqproc"><title>Question 5.14</title><link href="varieties.html" rev=precedes><link href="confused2.html" rel=precedes><link href="index.html" rev=subdocument></head><body bgcolor="#ffffff"><a href="varieties.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="confused2.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a> <a href="../index-2.html"><img src="../images/buttontop.gif" alt="top/contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><hr><p><!-- qbegin --><h1>comp.lang.c FAQ list<font color=blue>·</font><!-- qtag -->Question 5.14</h1><p><font face=Helvetica size=8 color=blue><b>Q:</b></font>Why is there so much confusion surrounding null pointers?Why do these questions come up so often?</p><p><hr><p><font face=Helvetica size=8 color=blue><b>A:</b></font>C programmers traditionally like to knowa lot(perhapsmore than theyneed to)about the underlying machine implementation.The fact that null pointers are represented both in source code,and internally to most machines,as zeroinvites unwarranted assumptions.The use of a preprocessor macro (<TT>NULL</TT>)may seem to suggestthat the value could changesome day,oron some weird machine.The construct ``<TT>if(p == 0)</TT>''is easily misreadas calling for conversion of <TT>p</TT> to an integral type,rather than<TT>0</TT> to a pointer type,before the comparison.Finally, the distinction between the several uses of the term``null''(listedin question <a href="varieties.html">5.13</a>)is often overlooked.</p><p>One good way to wade out of the confusion is to imagine that Cused akeyword (perhaps <TT>nil</TT>,like Pascal)as a null pointer constant.The compiler could either turn <TT>nil</TT> into theappropriatetype of null pointerwhen it couldunambiguously determinethat typefrom the source code,or complain when it could not.Now in fact,in C the keyword for a null pointer constant is not<TT>nil</TT> but <TT>0</TT>,which works almost as well,except that an uncast <TT>0</TT> in a non-pointer contextgenerates an integer zeroinstead of an error message,and if that uncast <TT>0</TT> was supposed to be a null pointer constant,theresulting programmay not work.</p><p>Additional links:an<a href="nullvs0.rs.html">article by Richard Stamp</a>with another angle on the NULL/0 distinction</p><!-- aend --><p><hr><a href="varieties.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="confused2.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a> <a href="../questions.html"><img src="../images/buttontop.gif" alt="contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><br><!-- lastfooter --><a href="../about.html">about this FAQ list</a> <a href="../eskimo.html">about eskimo</a> <a href="../search.html">search</a> <a href="../feedback.html">feedback</a> <a href="copyright.html">copyright</a><p>Hosted by<a href="http://www.eskimo.com/"><img src="../../www.eskimo.com/img/link/eskitiny.gif" alt="Eskimo North"></a></body><!-- Mirrored from c-faq.com/null/confusion.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:58:48 GMT --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -