c语法帮助 - 非常基本

时间:2010-03-06 11:15:15

标签: c syntax

如果我们有

char *val = someString;

然后说

if(val){
    ....
}

这里实际检查的if语句是什么?

10 个答案:

答案 0 :(得分:5)

您的if声明相当于:

if (val != NULL) { ...

comp.lang.c常见问题包含this question and answer,详细说明了为什么会这样。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

if(val)

相当于

if(NULL != val)

相当于

if((void*)0 != val)

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

答案 3 :(得分:1)

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

char * val = NULL;

if ( val ) {
  ...
}

测试会失败。

答案 4 :(得分:1)

val是否为空指针。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

  

只是检查val是否为NULL。

答案 7 :(得分:1)

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

答案 8 :(得分:0)

val是一个指针,该语句等于if(val!= 0),而0也定义为NULL,因此它将检查该指针是否指向NULL地址,请记住NULL字符串指针是与空字符串不一样

答案 9 :(得分:0)

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