、"return * test == ' 0';"コードスニペットがあり
int matchhere(char *regexp, char *text)
{
/* do sth */
return *test== '\0';
}
私は
return *test== '\0';
どういう意味を理解していません。それとも返されるのでしょうか? 「==」はここでどのように機能しますか?
、"return * test == ' 0';"コードスニペットがあり
int matchhere(char *regexp, char *text)
{
/* do sth */
return *test== '\0';
}
私は
return *test== '\0';
どういう意味を理解していません。それとも返されるのでしょうか? 「==」はここでどのように機能しますか?
*test
部分は、C文字列の最初の文字を読み取ります(C文字列は、指定されたアドレスから始まる単なる文字列であり、*foo
オペレータは最初の文字を含むそのアドレスを参照します)。定義上、C文字列はヌルバイト('\0'
または単に0
)で終わります。
これは、最初の文字が文字列の最後の文字かどうかをテストします。つまり、文字列が空であるかどうかをテストします。その比較結果(空の場合は1、空でない場合は0)が返されます。
「テスト」は「テキスト」と同じではなく、タイプミスが修正された場合C.
には、このようなタイプInt
がないので、それは最初の文字かどうかを確認したいので、それはコンパイルに失敗しますtext
が指すバッファの値はNULL文字です。つまり、バッファが空の場合は1
、それ以外の場合は0
を返します。
text
ポインタが指す文字が'\0'
文字(文字列終了文字)かどうかを確認します。
*test
はtest
ポインタの内容を意味し、char
です。
*test == '\0'
は、その文字をヌル文字と比較するだけです。
return *test == '\0'
は、その比較結果を返します。
基本的に、test
がヌル文字を指す場合、matchhere()
はtrueを返し、そうでない場合はfalseを返します。
は*test
が空の文字列である場合、その場合にはゼロ値
*test
異なっを戻すチェック文字列の最初の文字を表します。
==
は等価演算子です。
'\0'
はヌル文字で、Cでは文字列の最後を表します。
*test== ‘\0’
は、文字列が空になるたびにtrueを返す論理式です。
命令全体がその論理結果を呼び出し元に返します。
声明
return *text == '\0';
は、各場合
return text[0] == 0;
と同等です
return text[0] == '\0';
に相当し、それは文字列の最初の文字を比較していますが指しますtext
〜0(文字列ターミネータ)で、compの結果を返しますアリソン。それはもう相当*text
がそうでなければ非ゼロ、1ですが、それが良い味の境界を押していた場合に0を返します
return !*text; // or !text[0]
だろう
if (*text == '\0') // or *text == 0, or text[0] == 0, or !*text, or !text[0]
return 1;
else
return 0;
を書くことに相当します。
「Int」とスマート引用符。このスニペットにMs Wordを使用しましたか? :-) –
すべての関係演算子または等価演算子から得られる値は、 '0'または' 1'の値を持つ 'int'です。 – pmg