出産前後の痔にはご注意!

C言語での配列のコピーについて調べているのですが、memcpyの使い方がよくわかりません

例えば
memcpy(a,b,16);

for(i=0;i<16;i++){
a[i]=b[i];
}
では何が違うのでしょうか?

教えていただけたら幸いです。

このQ&Aに関連する最新のQ&A

A 回答 (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回)をコピーします。
    • good
    • 0

sizeof(a[0]) == 1 && sizeof(b[0]) == 1 なら、同じです。


sizeof(a[0]) > 1 || sizeof(b[0]) > 1 なら、違います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング