Куча в С++

  • Автор темы Guest
  • Дата начала
G

Guest

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

Dimmuborgir

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

Guest

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

Dimmuborgir

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

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

Dimmuborgir

#7
Код:
Использовать вектор
ну а если речь идет о дос компиляторе С++ к пример турбо Си 3? там STL нету)
 
04.09.2006
2 566
3
#8
ну а если речь идет о дос компиляторе С++ к пример турбо Си 3? там STL нету)
Ладно, проехали... Там смайлик стоял, вообще-то

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

Dimmuborgir

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

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

Guest

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

grigsoft

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

grigsoft

Well-known member
15.11.2005
735
0
#16
С одной стороны, они и не нужны совсем - все, что можно написать с классами, можно написать и без них. Более того, часто итоговый код может быть короче и работать будет быстрее. А уж неоправданное использование классов так вообще может здорово усложнить разработку. Так что классы - не панацея.
С другой стороны они позволяют: упростить понимание и проектирование программы в целом за счет оперирования объектами из реальной жизни, выделить независимые части, которые проще делать и сопровождать, облегчают безопасное последующее использование компонент за счет скрытия деталей реализации.