Другие языки программирования и технологии
Зачем вообще указатели в C++?
Я не могу понять зачем они, зачем создавать объект например так: MyClass* Object = new MyClass(); Я изучают C++ по книге, перечитывал 2 раза про указатели и не могу въехать зачем они. Если это возможно, то объясните простым языком.
может, на пальцах будет удобнее понять.
вот прикинь, что ты - миллиардер. как скрудж макдак. можно все свои деньги таскать с собой, только это неудобно - дюжина самосвалов золота. а можно положить их в банк и с собой таскать лишь указатель на них - банковскую карточку.
нужно что-то провернуть с богатством - скажем, в супермаркете мороженое купить - ты отдаешь карточку кассиру, та работает с исходным объектом, и твое состояние уменьшается на полтинник.
так и в сях. есть выделенная под объект область памяти, и есть указатель на эту область памяти - маленькая переменная, целое число, которую можно передавать в функции, клонировать и т. д.
вот прикинь, что ты - миллиардер. как скрудж макдак. можно все свои деньги таскать с собой, только это неудобно - дюжина самосвалов золота. а можно положить их в банк и с собой таскать лишь указатель на них - банковскую карточку.
нужно что-то провернуть с богатством - скажем, в супермаркете мороженое купить - ты отдаешь карточку кассиру, та работает с исходным объектом, и твое состояние уменьшается на полтинник.
так и в сях. есть выделенная под объект область памяти, и есть указатель на эту область памяти - маленькая переменная, целое число, которую можно передавать в функции, клонировать и т. д.
Андрей Родионов
Вам бы в преподаватели))) Очень доходчиво)))
Pavel Artemiev
Спасибо
Просто это такой способ работы с объектами (и не только с ними), перешедший в C++ из чистого С, как и многое другое. Можно в языке обойтись и без них, например, в С# указатели нормально не используются (хотя если очень постараться, то можно).
Фактически это открытая для программиста косвенная адресация, широко используемая на уровне машинных кодов, а C++, как и С, стремился сохранить средства, близкие к машинному коду, для возможности высокой оптимизации кода программистами.
Фактически это открытая для программиста косвенная адресация, широко используемая на уровне машинных кодов, а C++, как и С, стремился сохранить средства, близкие к машинному коду, для возможности высокой оптимизации кода программистами.
Pavel Artemiev
Можно подробнее? Буду благодарен.
Покажи, как ты возвращаешь созданный объект?
Предположим, с данными размером в 1Гб
Предположим, с данными размером в 1Гб
Alexandr Lakomyy
прикольно
указатели хорошо раскрыты в учебнике по си автор Ричи и Керриган "Язык программирования Си"
MyClass* Object = new MyClass();
Ну это не совсем корректная запись... скобки не нужны. да и без них она бессмыслена. Я думаю Вы имеете ввиду полиморфную возможность, что бы переопределять методы несуществующих подклассов. Если Вы читали книгу, то раздел о полиморфизме нельзя не заметить)))
Кроме того указатели и ссылки используются при передаче аргументов в функции... При передаче массива данных, Вы передаете не весь массив а только адрес на его первый элемент, что эффективно.
Но вернуться к полиморфизму простой пример:

Ну это не совсем корректная запись... скобки не нужны. да и без них она бессмыслена. Я думаю Вы имеете ввиду полиморфную возможность, что бы переопределять методы несуществующих подклассов. Если Вы читали книгу, то раздел о полиморфизме нельзя не заметить)))
Кроме того указатели и ссылки используются при передаче аргументов в функции... При передаче массива данных, Вы передаете не весь массив а только адрес на его первый элемент, что эффективно.
Но вернуться к полиморфизму простой пример:

Попросту сказать указатель это ссылка
зачем они зачем они а зачем они ?
ладно не понять как они работают, но для чего они нужны наверно можно понять.
наверно для экономии памяти и еще для экономии процессорной мощности.
я там точно не знаю примерно ну в общем для экономии чего то!!!!
вроде указатель просто указывает адрес на что то например на класс вместо создания копии класса или передачи копии.
в общем можно загуглить зачем или че такое указатель. я просто не интересовался очень сильно этим я примерно понял и то вряд ли как это работает и пошел дальше.
ну наверно ты станешь крутым программистом раз интересуешься такими мелочами.
или это не мелочи и я просто дурак в общем я забил на это.
ладно не понять как они работают, но для чего они нужны наверно можно понять.
наверно для экономии памяти и еще для экономии процессорной мощности.
я там точно не знаю примерно ну в общем для экономии чего то!!!!
вроде указатель просто указывает адрес на что то например на класс вместо создания копии класса или передачи копии.
в общем можно загуглить зачем или че такое указатель. я просто не интересовался очень сильно этим я примерно понял и то вряд ли как это работает и пошел дальше.
ну наверно ты станешь крутым программистом раз интересуешься такими мелочами.
или это не мелочи и я просто дурак в общем я забил на это.
Какие языки до с++ изучал?
Pavel Artemiev
Мне 13(Хотя думаю это не имеет никакого значения) я пробовал много языков, каждый раз изучал только их основы (Просто топтался на месте) были : python, java, пробовал вэб... потом решил учить C++, знаю C++ не лучшее для начинающих но всё-таки хочу разобраться.
Указатели это переменные, содержащие в себе адрес в памяти. По этому адресу в памяти может лежать любой объект, и чтобы иметь к нему доступ, нужно знать его адрес. Аналогия из жизни это любой жилой дом и его адрес. Ты не найдешь дом в городе, если не будешь знать его адреса. Так вот, переменные указатели как раз в себе и содержат адреса на объекты в памяти
Похожие вопросы
- Как разыменовать указатель в C++
- Зачем нужны указатели в c++? начал изучать язык C++ и не очень понимаю зачем нужны указатели?
- Массив указателей в C++
- Не понимаю указатели в C++
- Для чего нужны указатели в c ?
- Зачем нужны указатели в c++? Нельзя ли обычными переменными пользоваться?
- Как работают указатели в c++
- Есть ли ошибка? Может ли возникнуть? И вообще приемлимо ли? C++ классы
- Зачем в С/C++ создан отдельный тип "указатель"
- Когда стоит использовать указатели c++