Как создать массив?

Discussion in 'LANGS.C' started by nitrotoluol, Mar 2, 2007.

  1. nitrotoluol

    nitrotoluol New Member

    Blog Posts:
    0
    Сильно не пинайте, я только учусь.
    Вообщем нужно создать массив с заранее неизвестным числом элементов.
    Обычно я юзаю VirtualAlloc и еще всякий геморой. А можно ли как-то проще поступить в данном случае?
     
  2. rmn

    rmn Well-Known Member

    Blog Posts:
    0
    ITEMTYPE* Array = new ITEMTYPE[ItemsCount];

    [edited]
    может быть ты имеешь в виду динамический массив, который расширяется при добавлении в него новых элементов?
     
  3. nitrotoluol

    nitrotoluol New Member

    Blog Posts:
    0
    А можно создать массив с заранее неизвестным числом размерностей?
     
  4. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Blog Posts:
    0
    nitrotoluol
    Бросай курить, читай про new и програмь!
     
  5. censored

    censored New Member

    Blog Posts:
    0
    С99:
    void foo(int n) {
    int array[n];
    ...
    }
     
  6. ring4

    ring4 New Member

    Blog Posts:
    0
    это можно решить через динамическое выделение памяти

    int a = 5;
    int *pInt = new int[5];
    pInt[0] = 1;
    ....
    delete [] pInt;
     
  7. Asvald

    Asvald New Member

    Blog Posts:
    0
    Можно использовать vector и не возиться с ручным выделением памяти.
     
  8. censored

    censored New Member

    Blog Posts:
    0
    Asvald
    boost::scoped_array :)
     
  9. agent007

    agent007 New Member

    Blog Posts:
    0
    создать простую структурку, хранить указатель на последующую, и еще надо бы хранить указатель на первую. и все :)
     
  10. ring4

    ring4 New Member

    Blog Posts:
    0
    Asvald
    Да. Способов достаточно. Но пусть знают все. И выбирают тот который подходит по случаю.
     
  11. Aquila

    Aquila Самурай дзена

    Blog Posts:
    0
    Вот ещё способ для чистого Си: void *malloc(size_t size) :).
     
  12. rmn

    rmn Well-Known Member

    Blog Posts:
    0
    лучше void* calloc(size_t count, size_t elem_size), чтоб самому лишний раз не умножать :)

    p.s.
    ссылка "Цитировать" указывает на javascript : insert_text(selektion, '')
     
  13. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    А ещё лучше alloca ;)
     
  14. rain

    rain New Member

    Blog Posts:
    0
    у вас сходка ? вместе обкурились?
     
  15. _DEN_

    _DEN_ DEN

    Blog Posts:
    0
    censored

    Больной, у вас температура, идите обратно в палату))

    nitrotoluol

    std::vector и не исчи проблему на ровном месте.
     
  16. EP_X0FF

    EP_X0FF New Member

    Blog Posts:
    0
    censored

    Уж тогда:

    void foo(int n) {
    int *array = int int[n];
    ...
    }
     
  17. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    мегажесть:)

    тогда уж не int int[n], а new int[n] ...

    Нафига страницами выделять? Оо
    Может тогда уж лучше в куче HeapAlloc'ами всякими
     
  18. Mika0x65

    Mika0x65 New Member

    Blog Posts:
    0
    Все верно censored говорит, в С99 поддерживаются динамические массивы.
     
  19. Quantum

    Quantum Паладин дзена

    Blog Posts:
    0
    IceStudent
    А линуксоиды её не жалуют:
    "The alloca() function is machine and compiler dependent. On many systems its implementation is buggy. Its use is discouraged." [MAN]

    Да и стек этой "функцией" можно запросто сорвать.

    nitrotoluol
    Так о чём конкретно речь: массив, динамический массив, односвязный список, ... ???
     
  20. nitrotoluol

    nitrotoluol New Member

    Blog Posts:
    0
    Quantum
    массив динамический. Нужно создать 2хмерный массив с заданным числом строк и столбцов (задается пользователем... )