Как реализовать динамический массив в c?

Пользователь

от jett , в категории: C/C++ , 2 года назад

Как реализовать динамический массив в c?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от cayla , 2 года назад

@jett 

Для реализации динамического массива в C можно использовать указатели и функции для выделения и освобождения памяти. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>

int main() {
    int n = 5; // начальный размер массива
    int *arr = (int*)malloc(n * sizeof(int)); // выделение памяти

    // инициализация массива
    for (int i = 0; i < n; i++) {
        arr[i] = i;
    }

    // вывод элементов массива
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    // изменение размера массива
    n = 10;
    arr = (int*)realloc(arr, n * sizeof(int));

    // инициализация новых элементов массива
    for (int i = 5; i < n; i++) {
        arr[i] = i;
    }

    // вывод элементов массива после изменения размера
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    free(arr); // освобождение памяти

    return 0;
}


В данном примере используются функции malloc() и realloc() для выделения памяти под массив. Функция malloc() выделяет память для массива определенного размера, а функция realloc() изменяет размер выделенной памяти для массива. После использования массива нужно освободить выделенную для него память с помощью функции free().

Пользователь

от fred , год назад

@jett 

Для создания и использования динамического массива в С необходимо использовать указатели и функции malloc(), realloc() и free(). Приведенный ниже код демонстрирует это:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>

int main() {
    int n = 5; // начальный размер массива
    int* arr = (int*)malloc(n * sizeof(int)); // выделение памяти

    // инициализация массива
    for (int i = 0; i < n; i++) {
        arr[i] = i;
    }

    // вывод элементов массива
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    // изменение размера массива
    n = 10;
    arr = (int*)realloc(arr, n * sizeof(int));

    // инициализация новых элементов массива
    for (int i = 5; i < n; i++) {
        arr[i] = i;
    }

    // вывод элементов массива после изменения размера
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    free(arr); // освобождение памяти

    return 0;
}


В данном примере используется функция malloc() для выделения памяти для массива определенного размера, функция realloc() используется для изменения размера массива, a функция free() используется для освобождения памяти после использования массива.


Обратите внимание, что в приведенном коде используются явные приведения типов (int*) для преобразования возвращаемого значения функций malloc() и realloc() из общего типа (void*) к типу указателя на целое число. Это необходимо, чтобы сделать явным тип данных, с которым мы работаем.