2011-03-04 13 views
0

"return * test == ' 0';"コードスニペットがあり

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

私は

return *test== '\0'; 

どういう意味を理解していません。それとも返されるのでしょうか? 「==」はここでどのように機能しますか?

+0

「Int」とスマート引用符。このスニペットにMs Wordを使用しましたか? :-) –

+0

すべての関係演算子または等価演算子から得られる値は、 '0'または' 1'の値を持つ 'int'です。 – pmg

答えて

2

*test部分は、C文字列の最初の文字を読み取ります(C文字列は、指定されたアドレスから始まる単なる文字列であり、*fooオペレータは最初の文字を含むそのアドレスを参照します)。定義上、C文字列はヌルバイト('\0'または単に0)で終わります。

これは、最初の文字が文字列の最後の文字かどうかをテストします。つまり、文字列が空であるかどうかをテストします。その比較結果(空の場合は1、空でない場合は0)が返されます。

3

と比較すると、*testから'\0'は、不等号の場合は0、等しい場合は1を返します。

+0

@DownVoter:downvoteの理由があるコメントは高く評価されています – Erik

1

「テスト」は「テキスト」と同じではなく、タイプミスが修正された場合C.

には、このようなタイプIntがないので、それは最初の文字かどうかを確認したいので、それはコンパイルに失敗しますtextが指すバッファの値はNULL文字です。つまり、バッファが空の場合は1、それ以外の場合は0を返します。

0

textポインタが指す文字が'\0'文字(文字列終了文字)かどうかを確認します。

0

*testtestポインタの内容を意味し、charです。

*test == '\0'は、その文字をヌル文字と比較するだけです。

return *test == '\0'は、その比較結果を返します。

基本的に、testがヌル文字を指す場合、matchhere()はtrueを返し、そうでない場合はfalseを返します。

0

*testが空の文字列である場合、その場合にはゼロ値

0

*test異なっを戻すチェック文字列の最初の文字を表します。

==は等価演算子です。

'\0'はヌル文字で、Cでは文字列の最後を表します。

*test== ‘\0’は、文字列が空になるたびにtrueを返す論理式です。

命令全体がその論理結果を呼び出し元に返します。

0

声明

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; 

を書くことに相当します。

関連する問題