如果我們有C語法的幫助 - 非常基本的
char *val = someString;
,然後說
if(val){
....
}
什麼if
聲明實際上,簽在這裏?
if (val != NULL) { ...
的comp.lang.c FAQ包含this question and answer其進入一些詳細信息,爲什麼是這樣的話:到
如果我們有C語法的幫助 - 非常基本的
char *val = someString;
,然後說
if(val){
....
}
什麼if
聲明實際上,簽在這裏?
if (val != NULL) { ...
的comp.lang.c FAQ包含this question and answer其進入一些詳細信息,爲什麼是這樣的話:到
你if
語句是等價的。
它正在測試val是否包含NULL指針。如果你說過,
char * val = NULL;
if (val) {
...
}
測試會失敗。
你的意思是它會失敗? – Tronic 2010-03-06 11:18:41
@Tronic當然,我做過 - 早餐之前絕對不會在SO上發佈! – 2010-03-06 11:19:33
val是否爲空指針。
這是檢查if (val != 0)
。在C中,所有非零值都爲真,零爲假。
該聲明檢查與someString
相同的val
是否爲非NULL
。一般if (v)
是if (v!=0)
的快捷方式。
這只是檢查val是否爲NULL。
val
是指向char的指針。這可以設置爲任何地址 - 無效或無效 - 。 if語句將只檢查是否VAL不爲空:
if(val)
相當於
if(NULL != val)
相當於
if((void*)0 != val)
不過,指針可以指向一個無效的位置,例如不在的內存地址空間的應用程序。因此,將指針初始化爲0非常重要,否則它們將指向未定義的位置。在最壞的情況下,該位置可能是有效的,您將不會注意到該錯誤。
正如其他人所說,它正在檢查char指針是否不爲NULL。如果您想檢查字符串是否爲空,請嘗試strlen。
val爲指針,這種說法等於如果(VAL!= 0),而0也被定義爲NULL,所以它會檢查指針是否指向空地址,請記住,空字符串指針與空字符串不一樣
上面的if條件是檢查指針是否指向非空字符串。如果該指針指向任何非空字符串,則條件將爲true。否則,false。
爲什麼「粗略」? – Felixyz 2010-03-06 14:39:57
@Felixyz:你說得對,那是不必要的措辭。我已經添加了更多細節的鏈接。 – 2010-03-06 19:38:26