如果我们有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