- 締切済み
配列のコピーについて
C言語での配列のコピーについて調べているのですが、memcpyの使い方がよくわかりません 例えば memcpy(a,b,16); と for(i=0;i<16;i++){ a[i]=b[i]; } では何が違うのでしょうか? 教えていただけたら幸いです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
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 なら、違います。