0

重複の可能性:
C文字列の「\ 0」の後のメモリはどうなりますか?

ポインタの、たとえば3番目の要素をNUL('\ 0')にして、その後、ポインタの残りの要素を「消去」することは可能ですか?

4

1 に答える 1

3

あなたがCスタイルの文字列について話していると仮定すると、そうです、一種:

char s[] = "abcdefgh";   // s = "abcdefgh"
                         // (actually contains 9 characters: "abcdefgh\0")

s[3] = '\0';             // s = "abc"
                         // (still contains 9 characters, but now: "abc\0efgh\0")

この時点では、それ以降の文字s[3]は魔法のように消えていないことに注意してください。文字列を表示するか、Cスタイルの文字列を受け取る関数に渡すと、文字列に3文字しか含まれていないように見えます。あなたはまだすることができます例えば

s[3] = 'x';              // s = "abcxefgh"
                         // (still contains 9 characters, but now: "abcxefgh\0")
于 2012-10-24T05:42:37.877 に答える