を使用してstrlenを私は彼らに何が間違っているか知りたいでしょうか?Cは、と私は、ポインタを使用してstrlen関数の標準的な実装を見ているポインタ
これは、本のやり方と多少似ています。これは間違っていますか?
int strlen(char * s) { char *p = s; while (*p) p++; return p-s; }
I私は空の文字列を渡しますが、それでも私に0を与えた場合、pは、事前増分であるので、それは、ちょっと混乱間違っているだろうけれども:(そして今その私に5返す)
int strlen(char * s) { char *p = s; while (*++p) ; return p-s; }
をこれを見て、ポストはインクリメントして+1を返します。
int strlen(char * s) { char *p = s; while (*p++) ; return p-s; }
これは私のメインがどのように見えているのか、今私に5を与えています。 main(){ char A [] = ""; printf( "%d"、strlen(A)); } – user7703770
ああ...わかりました。何が起きているのか確認する前にポインタを増やしています。あなたがチェックするのは、スタック内のデータです。それは定義されていないので、\ 0を打つまで空の文字列の値を得ることができます。 – lungj