• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Куча в С++

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

Guest

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

Dimmuborgir

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

Guest

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

Dimmuborgir

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

Код:
cin>>n;

как теперь задать массив целых чисел размерностью n ?
 
G

Guest

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

Dimmuborgir

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

European

ну а если речь идет о дос компиляторе С++ к пример турбо Си 3? там STL нету)
Ладно, проехали... Там смайлик стоял, вообще-то

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

Dimmuborgir

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

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

а вообще когда начнешь классы изучать, узнаешь что такое виртуальные функции, и т д, то поймешь что к чему точно) и зачем нужна куча..
 
G

Guest

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

grigsoft

Ой, да не слушай их:D Только что прочитал отличную статью про преподавание математики в школах ( , рекомендую) - о том как из изящной, простой и красивой науки в школе делают свод нудных правил, путаницу с кучей ненужных обозначений.
Так и здесь - С++ - весьма изящная вещь, классы - это же очень красиво. То, как изначальный С ложится на архитектуру ПК - тоже. А какая песня использование 2го дополнения для представления отрицательных чисел?
Нет тут ничего сложного, надо только вникнуть в суть - в тот как собственно компьютер работает. По С++ почитай, например, "Дизайн и Эволюция С++", если представление о С уже имеешь.
 
G

gamecreator

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

grigsoft

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!