Я изучаю, как создавать динамические массивы 1D в C. Приведенный ниже код пытается сделать это:
- Создайте динамический массив длиной 10, который содержит удвоения, используя таНос.
- Задайте каждую запись массива
j/100
для 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);
Вопросы
1) Я правильно кодирую это?
2) Учебники, которые я нашел, используют malloc
, не помещая (double*)
спереди. Например.
int *pointer;
pointer = malloc(2*sizeof(int));
Это не компилируется для меня на Visual Studio 2010, Windows 7. Ошибка: "значение типа void не может быть назначено сущности типа int".
Почему это работает для этих учебных пособий, а не для меня? Правильно ли я предполагаю, что это связано с тем, что компиляторы, которые они используют, автоматически заполняют (int*)
для них в моем примере?