我學習如何在C.創建動態1D陣列下面的代碼試圖做到這一點:C中的動態數組 - 我對malloc/realloc的理解是否正確?
- 創建長度10的動態數組中,保持雙打,使用 的malloc。
- 對於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*)
放在前面。例如。
int *pointer;
pointer = malloc(2*sizeof(int));
這並不編譯我在Visual Studio 2010中,Windows 7的錯誤是「void類型的值不能被分配到int類型的實體」。
爲什麼它適用於那些教程而不適合我?我猜對了,這是因爲他們使用的編譯器在我的例子中自動填入(int*)
?
「void類型的值不能分配給int類型的實體」不是* C *編譯器應該產生的錯誤。問題是你正在使用* C++編譯器*。確保您的源文件名爲' .c'。 –