1

これは素晴らしい場所のようです。私の質問は、この memmove() の実装でどの値 (または何バイト) を移動しているのかということです。

int main ()
{
char str[] = "memmove can be very useful......";
memmove (str+15,str+20,/*?*/);
puts (str);
return 0;
}

次の例では、11 バイトを移動しています。しかし、なぜ 11 バイトなのですか? 誰か説明してくれませんか?

int main ()
{
char str[] = "memmove can be very useful......";
memmove (str+20,str+15,11); //source and destination are reversed
puts (str);
return 0;
}

ありがとう!

編集: ところで、文字列の長さは、終端のヌル文字を含めて 33 です。

4

3 に答える 3

1

の3番目のパラメーターはmemmove移動するバイト数を指定するため、2番目の例では11バイトを移動します。を呼び出す行で構文エラーが発生するため、最初の例はコンパイルしないでくださいmemmove

于 2011-10-29T02:22:14.993 に答える
0

memmove()の最後の引数は、移動するバイト数です。この場合は11です。

于 2011-10-29T02:21:13.427 に答える
0

3番目のパラメーターは、コピーするバイト数を定義します。最初の例では、コピーするバイト数を定義する必要があります。

于 2011-10-29T02:27:21.507 に答える