как создать массив динамический в с

Как создать динамический массив в С

В языке С динамический массив представляет собой массив, размер которого определяется во время выполнения программы.​ Для создания динамического массива необходимо выделить память во время выполнения программы, а затем освободить ее после использования.

Выделение памяти для динамического массива

Выделение памяти для динамического массива осуществляется с помощью функции malloc или оператора new. Оба этих способа используются для выделения непрерывного блока памяти заданного размера.​ Размер блока памяти определяется по количеству элементов массива умноженного на размер одного элемента.

Пример использования функции malloc

#include nlt;stdio.​hngt;
#include nlt;stdlib.​hngt;

int main {
    int n;
    printf(″Введите размерность массива⁚ ″);
    scanf(″%d″, nn);
    
    int *arr  (int *) malloc(n * sizeof(int));
    
    // Используйте массив arr
    
    free(arr); // Освобождение памяти
    
    return 0;
}

Пример использования оператора new

#include nlt;iostreamngt;
int main {
    int n;
    std⁚⁚cout nlt;nlt; ″Введите размерность массива⁚ ″;
    std⁚⁚cin ngt;ngt; n;
    
    int *arr  new int[n];
    
    // Используйте массив arr
    
    delete[] arr; // Освобождение памяти
    
    return 0;
}

Индексация и изменение размера динамического массива

Динамический массив индексируется так же, как и статический массив.​ Доступ к элементам осуществляется через индексы, начинающиеся с 0.​

Изменение размера динамического массива можно выполнить с помощью функции realloc или оператора new.​ Оба этих способа используются для изменения размера выделенного блока памяти.​

Пример использования функции realloc

#include nlt;stdio.​hngt;
#include nlt;stdlib.​hngt;

int main {
    int n;
    printf(″Введите размерность массива⁚ ″);
    scanf(″%d″, nn);
    
    int *arr  (int *) malloc(n * sizeof(int));
    
    // Используйте и изменяйте массив arr
    
    int newSize;
    printf(″Введите новую размерность массива⁚ ″);
    scanf(″%d″, nnewSize);
    
    arr  (int *) realloc(arr, newSize * sizeof(int)); // Изменение размера
    
    // Используйте измененный массив arr
    
    free(arr); // Освобождение памяти
    
    return 0;
}

Пример использования оператора new

#include nlt;iostreamngt;

int main {
    int n;
    std⁚⁚cout nlt;nlt; ″Введите размерность массива⁚ ″;
    std⁚⁚cin ngt;ngt; n;
    
    int *arr  new int[n];
        // Используйте и изменяйте массив arr
    
    int newSize;
    std⁚⁚cout nlt;nlt; ″Введите новую размерность массива⁚ ″;
    std⁚⁚cin ngt;ngt; newSize;
    
    int *newArr  new int[newSize]; // Создание нового массива
        for (int i  0; i nlt; newSize; i  ) {
        newArr[i]  arr[i]; // Копирование элементов в новый массив
    }
        delete[] arr; // Освобождение памяти старого массива
    arr  newArr; // Присвоение адреса нового массива старому
    
    // Используйте измененный массив arr
    
    delete[] arr; // Освобождение памяти измененного массива
        return 0;
}

Таким образом, динамический массив является более гибким и удобным инструментом для работы с данными, чем статический массив.​ Он позволяет изменять размер массива во время выполнения программы, а также освобождать занимаемую им память после использования.​

Оцените статью
База полезных знаний
Добавить комментарий