閱讀390 返回首頁    go 魔獸


NULL, 0, 空格與'0','\0'

NULL其實是一個宏,定義為0,#include <stdio.h> 裏是:
#ifndef NULL
#ifdef  __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif
  判斷指針是否為空時,p==NULL, 或p==0是一樣的意思,但習慣用NULL更好。
  後麵的空格(' ')與'0','\0'主要是在字符串中容易混淆,可以通過ASCII碼值來幫助區分:將所有的字符譯為ASCII碼值,
空格(' ')--->32
'0'-------->48
'\0'------->0
  C庫裏字符串的處理是按ASCII碼值來處理的,例如以'\0'值結束,就是以0值結束,所以p是字符指針,p[i]='\0'與p[i]=0或p[i]=NULL都是一樣的,都可以作為字符串結束標誌。(memset(p, 0, N)與memset(p, '\0', N)與memset(p, NULL, N)都是一樣的。)
  理解了這些,那麼'0',空格(' ')就不會混淆為結束標誌了,它們與普通字符沒什麼區別。

最後更新:2017-04-03 12:56:03

  上一篇:go 最大匹配-HDOJ 1068
  下一篇:go Linux文件共享(六)——描述符傳遞