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

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 2 мар 2007.

  1. nitrotoluol

    nitrotoluol New Member

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

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    ITEMTYPE* Array = new ITEMTYPE[ItemsCount];

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

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    А можно создать массив с заранее неизвестным числом размерностей?
     
  4. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    nitrotoluol
    Бросай курить, читай про new и програмь!
     
  5. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    С99:
    void foo(int n) {
    int array[n];
    ...
    }
     
  6. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    это можно решить через динамическое выделение памяти

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

    Asvald New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2006
    Сообщения:
    58
    Можно использовать vector и не возиться с ручным выделением памяти.
     
  8. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Asvald
    boost::scoped_array :)
     
  9. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    создать простую структурку, хранить указатель на последующую, и еще надо бы хранить указатель на первую. и все :)
     
  10. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    Asvald
    Да. Способов достаточно. Но пусть знают все. И выбирают тот который подходит по случаю.
     
  11. Aquila

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

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
    Вот ещё способ для чистого Си: void *malloc(size_t size) :).
     
  12. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    лучше void* calloc(size_t count, size_t elem_size), чтоб самому лишний раз не умножать :)

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

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    А ещё лучше alloca ;)
     
  14. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    у вас сходка ? вместе обкурились?
     
  15. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    censored

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

    nitrotoluol

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

    EP_X0FF New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2006
    Сообщения:
    450
    censored

    Уж тогда:

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

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    мегажесть:)

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

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

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Все верно censored говорит, в С99 поддерживаются динамические массивы.
     
  19. Quantum

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

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    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

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Quantum
    массив динамический. Нужно создать 2хмерный массив с заданным числом строк и столбцов (задается пользователем... )