|
>猿から始めるC言語というウェブページを見ていたら、次のような一文がありました。
>
>「malloc の引数はバイト数で渡すので、double
型の配列なら 実際の添字数の sizeof(double)
倍 (おそらく8倍) にして渡しています。」
>
>これはどういう意味でしょうか。実際の添字数の
sizeof(double) 倍というところが特に意味が理解できないので教えてください。
単純にdouble変数の配列を10個用意してくださいといったときは
double hoge1[10];
となりますよね。
これと同じサイズを動的に確保してくださいといったときは
double *hoge2;
hoge2 = (double *)malloc( sizeof( double ) * 10 );
となります。
malloc関数の引数には確保する領域のサイズをバイト単位で指定しないと
いけないので、sizeof演算子で取得したdouble型のサイズ*確保したい要素数となります。
ためしに
printf( "double型のサイズ :%d", sizeof( double ));
printf( "hoge1のサイズ :%d", sizeof( hoge1 ));
printf( "hoge2を確保するサイズ:%d", sizeof( double ) * 10 );
を出力してみるとわかりやすいかもしれません。
※注意:hoge2に対してsizeof演算子を使用するとdouble
*型のサイズを取得することになります。
|