Куча в С++

Тема в разделе "Общие вопросы по С и С++", создана пользователем -, 21 мар 2008.

  1. Гость

    Здравствуйте..... Не давно начал изучать "Кучу в С++" и много я не понял...
    Подскажите пожалуйста:
    Куча нужна Только для указателей???
    Например вот код
    Код (Text):
    int y;
    int* x;
    x = new int;
    x = &y;
    *x = 15;
    cout << y <<endl;
    delete x;
    x = 0;
    Вот зачем например нужна строчка x = new int; ? что мне дает эта куча?
    Ну вообщем поясните пожалуйста поподробнее, зачем нужна КУЧА, и как ее использовать! Заранее благодарю.... :)
     
  2. Dimmuborgir

    Dimmuborgir Гость

    куча нужна для динамически выделяемой памяти. строка x = new int; выделяет в памяти sizeof(int).
     
  3. Гость

    Ну а зачем вообще нужно выделять эту память? Ведь без строки x = new int; программа все равно работала бы! Если можно расскажите пожалуйста по подробнее об КУЧЕ... Просто я недавно только начал изучать этот язык.. И много еще чего не понимаю....
     
  4. Dimmuborgir

    Dimmuborgir Гость

    представь что тебе нужно задать массив размер, которого хранится в переменной, к примеру:

    Код (Text):
    cin>>n;
    как теперь задать массив целых чисел размерностью n ?
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Использовать вектор :)
     
  6. Гость

    И как?
    P.S.: Куча нужна только для указателей?
     
  7. Dimmuborgir

    Dimmuborgir Гость

    Код (Text):
    Использовать вектор
    ну а если речь идет о дос компиляторе С++ к пример турбо Си 3? там STL нету)
     
  8. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Ладно, проехали... Там смайлик стоял, вообще-то

    Куча нужна для размещения объектов. Оператор new возвращает указатель на созданный объект
     
  9. Dimmuborgir

    Dimmuborgir Гость

    вообщем лано отвечу простым примером для Джек_Воробей:

    Код (Text):
    cin>>n;
    int x[n]  <------ошибка! n не является константой
    int *x=new int[n]; <---- все хорошо. память выделяется динамически
    //какието операции с x
    delete [] x;
    а вообще когда начнешь классы изучать, узнаешь что такое виртуальные функции, и т д, то поймешь что к чему точно) и зачем нужна куча..
     
  10. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Только new, а не nex

    Не пугай человека
     
  11. Dimmuborgir

    Dimmuborgir Гость

    ))
    рано или позно придется.
     
  12. Гость

    Ок, всем спасибо за помощь! :D
     
  13. Гость

    Извините, что не по теме, но мне интересно стало: Я так понял, что КЛАССЫ самая трудная тема?
     
  14. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Ой, да не слушай их:D Только что прочитал отличную статью про преподавание математики в школах (http://www.maa.org/devlin/LockhartsLament.pdf, рекомендую) - о том как из изящной, простой и красивой науки в школе делают свод нудных правил, путаницу с кучей ненужных обозначений.
    Так и здесь - С++ - весьма изящная вещь, классы - это же очень красиво. То, как изначальный С ложится на архитектуру ПК - тоже. А какая песня использование 2го дополнения для представления отрицательных чисел?
    Нет тут ничего сложного, надо только вникнуть в суть - в тот как собственно компьютер работает. По С++ почитай, например, "Дизайн и Эволюция С++", если представление о С уже имеешь.
     
  15. gamecreator

    gamecreator Гость

    а зачем нужны классы? до конца еще не понял
     
  16. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    С одной стороны, они и не нужны совсем - все, что можно написать с классами, можно написать и без них. Более того, часто итоговый код может быть короче и работать будет быстрее. А уж неоправданное использование классов так вообще может здорово усложнить разработку. Так что классы - не панацея.
    С другой стороны они позволяют: упростить понимание и проектирование программы в целом за счет оперирования объектами из реальной жизни, выделить независимые части, которые проще делать и сопровождать, облегчают безопасное последующее использование компонент за счет скрытия деталей реализации.
     
Загрузка...

Поделиться этой страницей