2016-09-27 3 views
-2

This is a snippet from my code editorです。私はこのコードを実行しようとしていたが、whileループがここの文字列をどのように通過するのか理解できませんでした。親切に説明してください。strlenをC++で実装しているときに、forループでstring ++とは何ですか?

#include <iostream> 

using namespace std; 

int my_strlen(char *string){ 
    int length = 0; 
    while(*string !='\0'){ 
     length++; 
     cout << string <<endl; 
     string++; 
    } 
    return(length); 
} 

int main() { 
    my_strlen("this is a test"); 
    return 0; 
} 
+0

ここに画像としてではなくテキストとしてのポストコードを入力してください。 –

+0

ご迷惑をおかけして申し訳ありません。助けてもらえますか –

+1

あなたのコードをコピーして質問に貼り付け、それを選択してCTRL-Kを押します。 –

答えて

1

ポインタは、本質的にいくつかの値が格納されているメモリ内の特定の場所ではなく、実際の値そのものを表す変数です。

この関数は、文字ポインタchar*を引数として取ります。したがって、その引数は、関数が文字を格納すると仮定するメモリ内の場所です。 whileループは、そこに格納された値が'\0'であるかどうかを確認するために、メモリ内のその場所の値をチェックします。

行番号string++は、メモリ内の次の位置に文字ポインタを進めています。ここでwhileループはその次の位置に格納されている値を再度チェックします。あなたがチェックしている文字列の中の文字を概念的に移動すると考えてください。

たとえば、文字列"abcd\0"を確認する場合、string'a'を指しています。 string++は次に位置がstring'\0'の値を保持することによって指されるまでループが繰り返される等

'd'に次に'b'stringポイントを行い、その後'c'に、そしてなります。

+0

レミーありがとうございます。あなたはそれをとてもうまく説明した –

関連する問題