私は以下のコードはこれを実行しようとすると、Cでダイナミックな1次元配列を作成する方法を学んでいます:Cの動的配列 - malloc/reallocについての私の理解は正しいですか?
- mallocを使用して、ダブルスを保持している長さ10の動的配列を作成します。
- j = 0,1、...、9の場合、配列の各エントリを
j/100
に設定します。その後、 を印刷してください。 - 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);
質問
1)私はこの権利をコーディングするだろうか?
2)チュートリアルmalloc
は、(double*)
を付けずに使用しています。例えば。これは、Visual Studio 2010上で私のためにコンパイルされません
int *pointer;
pointer = malloc(2*sizeof(int));
は、Windows 7のエラーは、「void型の値がint型のエンティティに割り当てることはできません」です。
なぜ私はこれらのチュートリアルではうまくいかないのですか?私が使用しているコンパイラが、私の例では自動的に(int*)
を記入しているからです。
"void型の値をint型のエンティティに割り当てることはできません"は、* C *コンパイラが生成するエラーではありません。問題は* C++コンパイラ*を使用していることです。あなたのソースファイルの名前が ' .c'であることを確認してください。 –