如何理解“return * test =='\ 0';”

时间:2011-03-04 13:57:31

标签: c

有一段代码,

int matchhere(char *regexp, char  *text)
 {
    /* do sth */
    return    *test== '\0';
 }

我不明白是什么

return    *test== '\0';

的意思。或者会回归什么? “==”如何在这里发挥作用?

8 个答案:

答案 0 :(得分:3)

*test'\0'进行比较,如果不等于则返回0,如果相等则返回1.

答案 1 :(得分:2)

*test部分读取C字符串的第一个字符(C字符串只是从给定地址开始的一堆字符,*foo运算符查看恰好包含的地址第一个字符)。根据定义,C字符串以空字节('\0'或简称0)结尾。

因此,这将测试第一个字符是否为字符串结尾字符。或者换句话说:它测试字符串是否为空。该比较结果(如果为空则为1,如果为非空则为0)。

答案 2 :(得分:1)

无法编译,因为“test”与“text”不同,并且因为C中没有这样的类型Int

如果拼写错误已修复,它会查看text指向的缓冲区的第一个字母是否为NULL字符 - 即如果缓冲区为空则返回1,{ {1}}否则。

答案 3 :(得分:0)

它检查text指针指向的字符是否等于'\0'字符(字符串终止字符)。

答案 4 :(得分:0)

*test表示test指针的内容,即char

*test == '\0'只是将该字符与空字符进行比较。

return *test == '\0'表示返回该比较的结果。

基本上,如果test指向空字符,则matchhere()将返回true,否则为false。

答案 5 :(得分:0)

它检查*test是否为空字符串,在这种情况下返回与零值不同的

答案 6 :(得分:0)

*test表示字符串的第一个字符。

==是相等运算符。

'\0'是空字符,在C中表示字符串的结尾。

*test== ‘\0’是一个逻辑表达式,只要字符串为空,它就会返回true。

整个指令将该逻辑结果返回给调用者。

答案 7 :(得分:0)

声明

return *text == '\0';

相当于

return text[0] == '\0';

也等同于

return text[0] == 0;

在每种情况下,它将text指向的字符串的第一个字符与0(字符串终止符)进行比较,并返回比较结果。这相当于写作

if (*text == '\0') // or *text == 0, or text[0] == 0, or !*text, or !text[0]
  return 1;
else
  return 0;

另一个等价物是

return !*text; // or !text[0]

如果*text非零,则返回0,否则返回1,但这会推动良好品味的界限。