動的なメモリ領域の確保
double型変数5個分のメモリをmalloc関数により確保し,その確保した要素のアドレスを表示するように,プログラムを作る問題で、
(注)に「 %pで表示するためには,double型へのポインタ(double *)をvoid型へのポインタ(void *)にキャストする必要がある.」と書かれていたのですが、どういうことでしょうか?
以下のようでいいのでしょうか?
#include<stdio.h>
#include<stdlib.h>
#define COUNT 5 // 動的に確保するメモリ領域数を示すマクロ定数の定義
int main(void) {
// 動的に確保するメモリ領域のアドレスを保持するポインタ変数の宣言
double * pointer;
int i; // for文で使用する変数の宣言
// int型変数5個分のメモリ領域を確保
pointer = (double *)malloc(sizeof(double) * COUNT);
if(pointer == NULL) { // メモリ領域の確保が失敗した場合
printf("メモリ領域を確保できませんでした.\n");
exit(1); // プログラムの終了
}
for(i = 0; i < COUNT; i++)
printf("%d番目のアドレスは%pです.\n", i + 1, pointer + i);
free(pointer); // 確保したメモリ領域の解放
return 0;
}