C/C++ÖпÕÖ¸ÕëÓë0ÓëNULLºÍÆäËûÈô¸ÉÎÊÌâС½á
ʲôÊÇ¿ÕÖ¸Õë³£Á¿£¨null pointer constant£©?
[6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.
ÕâÀï¸æËßÎÒÃÇ£º0¡¢0L¡¢'\0'¡¢3 - 3¡¢0 * 17 £¨ËüÃǶ¼ÊÇ“integer constant expression”£©ÒÔ¼° (void*)0 µÈ¶¼ÊÇ¿ÕÖ¸Õë³£Á¿£¨×¢Òâ (char*) 0 ²»½Ð¿ÕÖ¸Õë³£Á¿£¬Ö»ÊÇÒ»¸ö¿ÕÖ¸ÕëÖµ£©¡£ÖÁÓÚϵͳѡȡÄÄÖÖÐÎʽ×÷Ϊ¿ÕÖ¸Õë³£Á¿Ê¹Óã¬ÔòÊÇʵÏÖÏà¹ØµÄ¡£Ò»°ãµÄ C ϵͳѡÔñ (void*)0 »òÕß 0 µÄ¾Ó¶à£¨Ò²Óиö±ðµÄÑ¡Ôñ 0L£©£»ÖÁÓÚ C++ ϵͳ£¬ÓÉÓÚ´æÔÚÑϸñµÄÀàÐÍת»¯µÄÒªÇó£¬void* ²»ÄÜÏó C ÖÐÄÇÑù×ÔÓÉת»»ÎªÆäËüÖ¸ÕëÀàÐÍ£¬ËùÒÔͨ³£Ñ¡ 0 ×÷Ϊ¿ÕÖ¸Õë³£Á¿£¬¶ø²»Ñ¡Ôñ (void*)0¡£
ʲôÊÇ¿ÕÖ¸Õ루null pointer£©?
[6.3.2.3-3] If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequal to a pointer to any object or function.
Òò´Ë£¬Èç¹û p ÊÇÒ»¸öÖ¸Õë±äÁ¿£¬Ôò p = 0;¡¢p = 0L;¡¢p = '\0';¡¢p = 3 - 3;¡¢p = 0 * 17; ÖеÄÈκÎÒ»ÖÖ¸³Öµ²Ù×÷Ö®ºó£¨¶ÔÓÚ C À´Ëµ»¹¿ÉÒÔÊÇ p = (void*)0;£©£¬ p ¶¼³ÉΪһ¸ö¿ÕÖ¸Õ룬ÓÉϵͳ±£Ö¤¿ÕÖ¸Õë²»Ö¸ÏòÈκÎʵ¼ÊµÄ¶ÔÏó»òÕߺ¯Êý¡£·´¹ýÀ´Ëµ£¬ÈκζÔÏó»òÕߺ¯ÊýµÄµØÖ·¶¼²»¿ÉÄÜÊÇ¿ÕÖ¸Õë¡£
ʲôÊÇ NULL£¿
[6.3.2.3-Footnote] The macro NULL is defined in <stddef.h> (and other headers) as a null pointer constant
¼´ NULL ÊÇÒ»¸ö±ê×¼¹æ¶¨µÄºê¶¨Ò壬ÓÃÀ´±íʾ¿ÕÖ¸Õë³£Á¿¡£Òò´Ë£¬³ýÁËÉÏÃæµÄ¸÷ÖÖ¸³Öµ·½Ê½Ö®Í⣬»¹¿ÉÒÔÓà p = NULL; À´Ê¹ p ³ÉΪһ¸ö¿ÕÖ¸Õë¡£
¿ÕÖ¸Õ루null pointer£©Ö¸ÏòÁËÄÚ´æµÄʲôµØ·½£¨¿ÕÖ¸ÕëµÄÄÚ²¿ÊµÏÖ£©£¿
±ê×¼²¢Ã»ÓжԿÕÖ¸ÕëÖ¸ÏòÄÚ´æÖеÄʲôµØ·½ÕâÒ»¸öÎÊÌâ×÷³ö¹æ¶¨£¬Ò²¾ÍÊÇ˵ÓÃÄĸö¾ßÌåµÄµØÖ·Öµ£¨0x0 µØÖ·»¹ÊÇÄ³Ò»ÌØ¶¨µØÖ·£©±íʾ¿ÕÖ¸ÕëÈ¡¾öÓÚϵͳµÄʵÏÖ¡£ÎÒÃdz£¼ûµÄ¿ÕÖ¸ÕëÒ»°ãÖ¸Ïò 0 µØÖ·£¬¼´¿ÕÖ¸ÕëµÄÄÚ²¿ÓÃÈ« 0 À´±íʾ£¨zero null pointer£¬Áã¿ÕÖ¸Õ룩£»Ò²ÓÐһЩϵͳÓÃÒ»Ð©ÌØÊâµÄµØÖ·Öµ»òÕßÌØÊâµÄ·½Ê½±íʾ¿ÕÖ¸Õ루nonzero null pointer£¬·ÇÁã¿ÕÖ¸Õ룩£¬¾ßÌåÇë²Î¼û C FAQ¡£
ÐÒÔ˵ÄÊÇ£¬ÔÚʵ¼Ê±à³ÌÖв»ÐèÒªÁ˽âÔÚÎÒÃǵÄϵͳÉÏ¿ÕÖ¸Õëµ½µ×ÊÇÒ»¸ö zero null pointer »¹ÊÇ nonzero null pointer£¬ÎÒÃÇÖ»ÐèÒªÁ˽âÒ»¸öÖ¸ÕëÊÇ·ñÊÇ¿ÕÖ¸Õë¾Í¿ÉÒÔÁË——±àÒëÆ÷»á×Ô¶¯ÊµÏÖÆäÖеÄת»»£¬ÎªÎÒÃÇÆÁ±ÎÆäÖеÄʵÏÖϸ½Ú¡£×¢Òâ£
Ïà¹ØÎĵµ£º
1¡¢±£Ö¤Äã´«µÝµÄ²ÎÊýÒªÕýÈ·£ºC++ÖеÄchar *¶ÔÓ¦PASCALÖеÄpchar¡£
2£ºC++Öе¼³öµÄº¯ÊýµÄ²ÎÊýµ÷Ó÷½Ê½ÒªºÍÄãDELPHIÖеĵ¼ÈëµÄº¯Êý²ÎÊýµ÷Ó÷½Ê½ÒªÒ»ÖÂ!
ÀýÈ磺 C++µÄ²ÎÊýµ÷Ó÷½Ê½ ¶ÔÓ¦µÄDELPHIµÄ²ÎÊýµ÷Ó÷½Ê½
_declspec ......
VC++ÖвÙ×÷XML£¨MFC¡¢SDK£©
2009Äê01ÔÂ07ÈÕ ÐÇÆÚÈý 22:33
XMLÔÚWin32³ÌÐò·½ÃæÓ¦¸ÃûÓÐÔÚWeb·½ÃæÓ¦Óõö࣬ºÜ¶à
Win32³ÌÐòÒ²Ö»ÊÇÓÃXMLÀ´´æ´æÅäÖÃÐÅÏ¢¶øÒÑ£¬¶øÇÒûÓÐ×ã¹»
µÄºÃ´¦µÄ»°»¹²»ÈçÓà ini¡£VC++Àï²Ù×÷XMLÓÐÁ½¸ö¿â¿ÉÒÔÓãº
MSXMLºÍXmlLite¡£MSXMLÓÖϸ·ÖÁËÁ½ÖÖ½Ó¿Ú£ºDOMºÍSAX2¡£XPû×Ô´øÓÐ XmlLite£¬Ö»×Ô´øÓÐ2.x¡¢3 ......
ºÜÓвο¼ÒâÒåµÄѧÀúÁ÷³Ì¡£
¡¡¡¡1¡¢¿ÉÒÔ¿¼ÂÇÏÈѧϰC.
¡¡¡¡´ó¶àÊýʱºò£¬ÎÒÃÇѧϰÓïÑÔµÄÄ¿µÄ£¬²»ÊÇΪÁ˳ÉΪһ¸öÓïÑÔר¼Ò£¬¶øÊÇÏ£Íû³ÉΪһ¸ö½â¾öÎÊÌâµÄר¼Ò¡£×öÒ»¸öÓÐÓõijÌÐòÔ±£¬×öÒ»¸ö׬ǮµÄ³ÌÐòÔ±¡£ÎÒÃǵļÛÖµ£¬½«ÌåÏÖÔÚ¿Í»§¼ÛÖµÉÏ£¬¶ø²»ÊÇÓïÑÔдµÃºÃ²»ºÃ¿´¡£
¡¡¡¡C++ÊÇCµÄÒ»¸öÃæÏò¶ÔÏóµÄ½âÊÍ£¬C++ΪCÀ ......
/***
*strtok.c - tokenize a string with given delimiters
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
* defines strtok() - breaks string into series of token
* via repeated calls.
*
************************************************************** ......