Форум программистов, компьютерный форум CyberForum.ru

указатель - C++

Восстановить пароль Регистрация
 
rizr
1 / 1 / 0
Регистрация: 13.01.2013
Сообщений: 71
13.01.2013, 02:55     указатель #1
собственно смысл ссылки я понял, грубо говоря передача в функцию адреса переменной что бы функция меняла не копию, а сам передаваемый аргумент плюс избежания лишнего копирования, а что делает указатель тогда когда через него передают в функцию?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zvoronz
 Аватар для zvoronz
270 / 237 / 21
Регистрация: 29.05.2012
Сообщений: 889
13.01.2013, 03:11     указатель #2
Фактически происходит тоже самое. Ссылки иногда ещё называют скрытыми указателями.
изменение будет в синтаксисе например
mult(int a, int b, int&res);
mult2(int a, int b, int* res);

mult(2, 5, otv);
mult2(2, 5, &otv);
rizr
1 / 1 / 0
Регистрация: 13.01.2013
Сообщений: 71
13.01.2013, 03:18  [ТС]     указатель #3
ну я не думаю что это всё только ради синтаксиса делали. ссылками проблем нету, а вот с указателями у меня путанина (
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 03:21     указатель #4
ну вот допустим есть у тебя число какое-то например 150, находится в 10-й ячейке памяти
ссылка это содержимое ячейки памяти тобиш 150, а адрес это номер ячейки тоесь 10
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
13.01.2013, 03:22     указатель #5
rizr, у них смысл разный: ссылка - это как бы "псевдоним" переменной, указатель же хранит адрес переменной.
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 03:45     указатель #6
кстати есть ещё значение.
ссылка очень похожа на значение но это не совсем одно и то же

Добавлено через 1 минуту
значение не привязано к памяти, а ссылка и указатель привязаны к памяти

Добавлено через 4 минуты
значение переменной можно изменять, адрес переменной изменить нельзя. когда изменяется указатель, он не меняет адрес переменной, а просто начинает указывать на другую переменную

Добавлено через 9 минут
вот допустим живёт человек в квартире, в этом случае
указатель - номер квартиры
ссылка - имя жильца
значение - сам человек

если он переехал
указатель так и указывает на квартиру
ссылка даст нам имя нового жильца
а значение (человек) где-то в другом месте живёт
rizr
1 / 1 / 0
Регистрация: 13.01.2013
Сообщений: 71
13.01.2013, 03:57  [ТС]     указатель #7
ну а тогда как понять когда нужно(или не обойтись без него) использовать указатель?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
13.01.2013, 04:03     указатель #8
Цитата Сообщение от rizr Посмотреть сообщение
ну а тогда как понять когда нужно(или не обойтись без него) использовать указатель?
Когда надо хранить\использовать адрес переменной. Если просто нужно косвенное обращение к переменной - ссылки должно быть достаточно.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
13.01.2013, 04:14     указатель #9
изучи чистый си, и увидишь сотни ситуаций, как и когда использовать указатели. Ссылки же в С++ чаще всего используются лишь для передачи аргументов в функции по ссылке. Поправьте, если ошибаюсь.

Добавлено через 10 минут
Проблема со ссылками в том, что они не могут быть неинициализированы, похоже они изначально затачивались именно под передачу аргументов в функции по ссылке. Во всех остальных случаях я использую указатель.
Выделение динамической памяти: указатели
хранение адреса следующего элемента в связанном списке/дереве/и.т.п: указатели
хранение указателя на объект абстрактного класса: указатели.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 05:11     указатель
Еще ссылки по теме:

Расскажите, как здесь работает указатель на указатель? C++
Почему указатель на указатель объявляется как float **A; C++
C++ Указатель на указатель и Нарушение прав доступа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 05:11     указатель #10
в любом случае при передаче ссылки или указателя в стек запихивается адрес, тут разницы нету. просто как удобнее и понятнее ) например если надо с памятью работать, то лучше указатель, а если просто со значением что-то делать без лишней писанины, то ссылка лучше

Добавлено через 13 минут
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Выделение динамической памяти: указатели
вот, кстати хороший пример можно привести. допустим написан код, в котором переменная создаётся в локальной памяти.
C++
1
2
int i = 0;
// и много разных использований этой переменной
а потом понадобилось что бы эта переменная была в динамической памяти
проще сделать так
C++
1
2
int *pi = new int(0);
int &i = *pi;
и тогда ничего в коде не надо менять, только дописать в конце
C++
1
delete pi;
Yandex
Объявления
13.01.2013, 05:11     указатель
Ответ Создать тему
Опции темы

Текущее время: 05:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru