私はCで動的1D配列を作成する方法を学んでいます。以下のコードは次のことを行おうとします。
- を使用して、タイプの値を保持する
malloc
長さの動的配列を作成します。10
double
- 配列の各エントリを
j/100
forに設定しj = 0, 1,..., 9
ます。次に、それを印刷します。 - を使用して、配列の最後に空のエントリを追加し
realloc
ます。 - 新しいエントリをに設定し、
j/100
各エントリを再度印刷します。
テスト:
double* data = (double*)malloc(10*sizeof(double));
for (j=0;j<10;j++)
{
data[j]= ((double)j)/100;
printf("%g, ",data[j]);
}
printf("\n");
data = (double*)realloc(data,11*sizeof(double));
for (j=0;j<11;j++)
{
if (j == 10){ data[j]= ((double)j)/100; }
printf("%g, ",data[j]);
}
free((void*) data);
質問
私はこれを正しくコーディングしていますか?
私が見つけたチュートリアルは、前に
malloc
出さずに使用できます。(double*)
例えば、int*ポインタ;
ポインタ=malloc(2 * sizeof(int));
これは、Visual Studio 2010、Windows7ではコンパイルされません。エラーメッセージは次のとおりです。
タイプvoidの値をタイプのエンティティに割り当てることはできません
int
。
なぜそれは私ではなくそれらのチュートリアルで機能するのですか?私の例では、使用しているコンパイラが自動的にそれらを入力するためだと推測するのは正しい(int*)
ですか?