В этом коде serie
- это указатель на целое число .Строка с malloc()
выделяет для нее место, так что установка или получение целого числа для *serie
будет работать.Цикл, кажется, неправильно устанавливает возвращаемое значение rand()
(целое число) в serie
.Эта конкретная строка в вашем текущем коде должна выглядеть следующим образом (но в любом случае это не то, что вам нужно):
*serie = rand();
Поскольку rand()
возвращает целое число, а один serie
является указателем на целое число,Тем не менее, *serie
- это целое число, которое вы можете установить.
В printf()
вы пытаетесь получить доступ к serie
как массив, но это не сработает, потому что вы тольковыделен один элемент.Ну, это будет работать, но только для нулевого элемента.
Если вы пытаетесь установить и сгенерировать 20 случайных элементов (но с использованием «динамического» массива), вы можете захотеть что-то вроде этого:
int i;
// note allocating the proper number of elements
int *serie = malloc(sizeof(int) * 20);
// note starting at and going < 20 for 20 elements
for (i = 0; i < 20; i++) {
serie[i] = rand();
printf("%d ", serie[i]); // *(serie + i) will also work here
}
Обратите внимание, что всякий раз, когда вы используете квадратные скобки для доступа к элементу, он разыменовывает его, так же как и *
.Так что serie[i]
и *(serie + i)
функционально эквивалентны.