2010-03-06 27 views

回答

5

if语句是等价的。

+0

为什么“粗略”? – Felixyz 2010-03-06 14:39:57

+0

@Felixyz:你说得对,那是不必要的措辞。我已经添加了更多细节的链接。 – 2010-03-06 19:38:26

1

它正在测试val是否包含NULL指针。如果你说过,

char * val = NULL; 

if (val) { 
    ... 
} 

测试会失败。

+0

你的意思是它会失败? – Tronic 2010-03-06 11:18:41

+0

@Tronic当然,我做过 - 早餐之前绝对不会在SO上发布! – 2010-03-06 11:19:33

1

val是否为空指针。

2

这是检查if (val != 0)。在C中,所有非零值都为真,零为假。

1

该声明检查与someString相同的val是否为非NULL。一般if (v)if (v!=0)的快捷方式。

2

val是指向char的指针。这可以设置为任何地址 - 无效或无效 - 。 if语句将只检查是否VAL不为空:

if(val)

相当于

if(NULL != val)

相当于

if((void*)0 != val)

不过,指针可以指向一个无效的位置,例如不在的内存地址空间的应用程序。因此,将指针初始化为0非常重要,否则它们将指向未定义的位置。在最坏的情况下,该位置可能是有效的,您将不会注意到该错误。

1

正如其他人所说,它正在检查char指针是否不为NULL。如果您想检查字符串是否为空,请尝试strlen

0

val为指针,这种说法等于如果(VAL!= 0),而0也被定义为NULL,所以它会检查指针是否指向空地址,请记住,空字符串指针与空字符串不一样

0

上面的if条件是检查指针是否指向非空字符串。如果该指针指向任何非空字符串,则条件将为true。否则,false。