プロが教えるわが家の防犯対策術!

C言語の配列のコピーについて

int a[] = {1,2,3};
int b[3];
memcpy(b, a, sizeof(a));

は、分かるのですが、

int c[][3] = {
{1,2,3},
{4,5,6},
{7,8,9},
{10,11,12}
};
int d[4][3];

memcpy(d, c, sizeof(c));

の使い方は正しいのでしょうか?
1次元配列の場合は連続するメモリ?なのでmemcpyでOKだと思うのですが
2次元以上の配列の場合は、メモリが連続しているか知らないので
不安に思いました。

実際、C言語でのメモリの取り方など詳しく書かれている本などありますか?
よく初心者向け本にメモリは箱という大雑把なイメージで取り挙げられているのですが、突っ込んだ書籍等も探しています。
玄人の方、難しく(^^教えてください。

A 回答 (1件)

正しいです。


配列では、連続した領域にデータを格納します。

「Cプログラミング専門課程」(技術評論社)をおすすめします。
13年前の本ですが、内容は色あせていません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
その本を購入してみようと思います。

お礼日時:2007/10/27 14:56

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

このQ&Aを見た人はこんなQ&Aも見ています