Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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); } // Освобождение памяти
Date: 2015-10-19; view: 431; Нарушение авторских прав |