有一段代码,
int matchhere(char *regexp, char *text)
{
/* do sth */
return *test== '\0';
}
我不明白是什么
return *test== '\0';
的意思。或者会回归什么? “==”如何在这里发挥作用?
答案 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,但这会推动良好品味的界限。