Другие языки программирования и технологии
Объясните мне указатели и ссылки в С++. Для чего они нужны?
По Шилдту не понятно. Он показывает их так, что и без них можно обойтись, используя обычные переменные. Обьясните * и & как их правильно использовать при присвоении. Вообщем нужно мне знать все про это и по понятнее.
Ссылка - накладная на товар. Передать накладную в бухгалтерию легче, чем притащить туда для освидетельствования 100500 тонн орехов, указанных в этой накладной, тем более что там их есть не собираются, а только распределят по складам да магазинам для реализации.
Накладная - ссылка.
Бухгалтерия - функция.
Орехи - объект.
При передаче в функцию (метод класса) объекта по значению, создаётся копия этого объекта. Это требует времени и ресурсов памяти. К тому же изменить можно только передаваемую копию, оригинал останется неизменным.
А вот если передать по ссылке или указателю, то функция (метод класса) работают непосредственно с самим объектом.
Указатель отличается от ссылки тем, что указатель это адрес в памяти, который при желании можно изменить, то есть взять адрес другого объекта, а ссылка намертво привязана к своему объекту. Ну как козла не назови, он вонять не перестанет.
Дойдёшь до конструктора копирования, поймёшь зачем нужны ссылки.
Чтобы объяснить все возможности указателей, 4000 знаков не хватит!
Важно.
К указателям применимы две операции, операция взятия адреса & и разыменование указателя *, обе - унарные. Первая & получает адрес объекта, который указывает на его первый байт в памяти, вторая * позволяет получить значение объекта, которое храниться в памяти по этому адресу.
Ссылки обязательно должны быть проинициализированы при их объявлении, и нельзя переопределить ссылку на другой объект.
Накладная - ссылка.
Бухгалтерия - функция.
Орехи - объект.
При передаче в функцию (метод класса) объекта по значению, создаётся копия этого объекта. Это требует времени и ресурсов памяти. К тому же изменить можно только передаваемую копию, оригинал останется неизменным.
А вот если передать по ссылке или указателю, то функция (метод класса) работают непосредственно с самим объектом.
Указатель отличается от ссылки тем, что указатель это адрес в памяти, который при желании можно изменить, то есть взять адрес другого объекта, а ссылка намертво привязана к своему объекту. Ну как козла не назови, он вонять не перестанет.
Дойдёшь до конструктора копирования, поймёшь зачем нужны ссылки.
Чтобы объяснить все возможности указателей, 4000 знаков не хватит!
Важно.
К указателям применимы две операции, операция взятия адреса & и разыменование указателя *, обе - унарные. Первая & получает адрес объекта, который указывает на его первый байт в памяти, вторая * позволяет получить значение объекта, которое храниться в памяти по этому адресу.
Ссылки обязательно должны быть проинициализированы при их объявлении, и нельзя переопределить ссылку на другой объект.
Похожие вопросы
- C++ указатель на ссылку, ссылка на указатель что можно создать и пример кода если нетрудно.
- Указатели и ссылки в c++
- помогите в фотошопе наложить фото на шаблон!!!Только пошагово объясните- я -новичек, и ссылки на уроки мне не удобны..(
- Объясните пожалуйста, что такое HEX редактор и для чего он нужен?
- Для чего нужен указатель this и каков его принцип работы? Объясните пожалуйста самым простым языком, как 2+2.
- Список с использованием указателей на Си
- Несколько вопросов по Делфи. что такое указатели и зачем они нужны, зачем нужна @ ,и что за тип Pointer.
- да зачем нужны эти указатели ?? C++. Зачем нужны указатели? почему не обойтись без простой переменной??
- Зачем нужны указатели в c++? начал изучать язык C++ и не очень понимаю зачем нужны указатели?
- Два вопроса про указатели в С++ внутри.