Веб программирование

Реализация массива переменной длины на Си

 
 

Добрый день. В Visual Basic, как известно, есть такая вещь как ReDim. Она позволяет реализовать массив переменной длины. В плюсах у нас имеется std::vector. В Си это реализовывается через realloc, например так:


#include <stdio.h>
#include <stdlib.h>

int main() {
    int size = sizeof(int);
    int curs = 0;
    
    int* arr = malloc(size);
    
    int ch;
    while(1) {
        scanf("%d", &ch);
        
        if(ch == 0)
            break;
        
        arr[curs++] = ch;
        size *= 2;
        arr = realloc(arr, size);
    }
    
    int i;
    for(i = 0; i < curs; i++)
        printf("%dn", arr[i]);
    
    return 0;
}

С помощью того же realloc мы можем реализовать многие структуры данных, например, стек. Со всеми вопросами прошу в комментарии. Удачи.


Есть вопросы? Спроси на нашем форуме!!
EverybodyLies280 [11.08.2013 13:26]

Полезно

Stertor370 [07.03.2014 23:03]

Еще раз забанишь - забью спамом весь сайт. Никакой ты не модератор, я отказываюсь подчиняться твоим правилам.

Edward300 [08.03.2014 11:05]

Stertor, Вы забанены за спам! Вы нарушайте работу сайта.

EverybodyLies280 [08.03.2014 18:45]

Stertor, а у тебя ума так и не прибавилось, я смотрю)



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.