Динамическое выделение памяти под одномерный массив - C (СИ)
Формулировка задачи:
В общем, вопрос такой.
Пусть нам нужно задать массив, используя динамическое выделение памяти. Как это сделать?
Расскажу свой ход мыслей, а вы скажите прав я или нет.
В начале мы задаём указатель на тип данных, после вводим количество необходимых элементов под массив.
Далее резервируем память, используя функцию malloc. (Количество элементов*размер типа данных) Таким образом получаем, сколько будет весить наш массив. Потом путём получения адресов i-ого элемента заполняем массив.
Фрагмент кода:
int *array, i,j, n;
int Min, Max=0, sum=0, proizv=1,temp,imin;
printf("Введите необходимое количество элементов массива:");
scanf("%d",&n);
array=(int*)malloc(n*sizeof(int));// указатель на целый тип, в котором применяется функция malloc, подсчитывающая необходимое количество памяти в байтах под размерность массива
for(i=0;i<n;++i)
{
printf("[%d]=",i);
scanf("%d",&array[i]);// вывод i-ого числа элементов массива под зарезервированную системой память
}Решение задачи: «Динамическое выделение памяти под одномерный массив»
textual
Листинг программы
scanf("%d",&array[i]);
scanf("%d", (array+i));
Объяснение кода листинга программы
В представленном коде выполняется динамическое выделение памяти под одномерный массив. Эта операция выполняется следующим образом:
- Объявляется переменная
arrayтипаint*(указатель на целое число). Эта переменная будет использоваться для хранения адреса первого элемента массива. - В цикле
forс переменнойiот 0 доn-1(гдеn- размер массива) выполняется следующее: a. С помощью оператораscanfпроисходит чтение целочисленного значения в элемент массива. В первом случаеscanfвызывается с аргументомarray[i], что означает, что он будет читать значение и записывать его в элемент массива с индексомi. Во втором случаеscanfвызывается с аргументом(array+i), что означает, что он будет читать значение и записывать его в элемент массива, на который указываетarrayс добавлениемi(то естьarrayувеличивается наiперед вызовомscanf). Таким образом, в цикле происходит чтениеnцелочисленных значений и их запись в массив.