• 締切済み

配列のコピーについて

C言語での配列のコピーについて調べているのですが、memcpyの使い方がよくわかりません 例えば memcpy(a,b,16); と for(i=0;i<16;i++){ a[i]=b[i]; } では何が違うのでしょうか? 教えていただけたら幸いです。

みんなの回答

noname#208507
noname#208507
回答No.2

#1さんの回答と同じですが、要するにmemcpyは指定したバイト数でコピーする長さが決まります。 memcpy(a,b,16); はaとbの型に関係なく、16バイトをコピーします。 たとえば配列aとbが char a[16], b[16]; でchar型が1バイトなら for(i=0;i<16;i++){ a[i]=b[i]; } は上のmemcpyと同じです。 もしaとbが int a[16], b[16]; でint型が4バイトなら上のfor文は256バイト(16バイト✕16回)をコピーします。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

sizeof(a[0]) == 1 && sizeof(b[0]) == 1 なら、同じです。 sizeof(a[0]) > 1 || sizeof(b[0]) > 1 なら、違います。