Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Создание одномерного динамического массиваВ языке Си размерность массива при объявлении должна задаваться константным выражением. Если до выполнения программы неизвестно, сколько понадобится элементов массива, нужно использовать динамические массивы, т.е. при необходимости работы с массивами переменной размерности вместо массива достаточно объявить указатель требуемого типа и присвоить ему адрес свободной области памяти (захватить память). Память под такие массивы выделяется с помощью функций mallос и calloc во время выполнения программы. Адрес начала массива хранится в переменной-указателе. Например: int n = 10; double *b = (double *) malloc(n * sizeof (double)); В примере значение переменной n задано, но может быть получено и программным путем. Обнуления памяти при ее выделении не происходит. Инициализировать динамический массив при декларации нельзя. Обращение к элементу динамического массива осуществляется так же, как и к элементу обычного – например а [3]. Можно обратиться к элементу массива и через косвенную адресацию – *(а + 3). В любом случае происходят те же действия, которые выполняются при обращении к элементу массива, декларированного обычным образом. После работы захваченную под динамический массив память необходимо освободить, для нашего примера free (b); Таким образом, время жизни динамического массива, как и любой динамической переменной – с момента выделения памяти до момента ее освобождения. Пример работы с динамическим массивом: #include <alloc.h> #include<stdio.h> void main() { double *x; int n; printf("\nВведите размер массива – "); scanf("%d", &n); // Захват памяти if ((x = (double*)calloc(n, sizeof(*x)))==NULL) { puts("Ошибка "); return; } ... // Работа с элементами массива ... free(x); } // Освобождение памяти
|