繁体   English   中英

c语法帮助 - 非常基本

[英]c syntax help - very basic

如果我们有

char *val = someString;

然后说

if(val){
    ....
}

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

你的if语句相当于:

if (val != NULL) { ...

comp.lang.c FAQ包含这个问题和答案 ,更详细地说明了为什么这是真的。

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

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

if(val)

相当于

if(NULL != val)

相当于

if((void*)0 != val)

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

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

char * val = NULL;

if ( val ) {
  ...
}

测试会失败。

val是否为空指针。

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

它只是检查val是否为NULL。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM