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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
#1

Указатель и ссылка - C++

29.04.2012, 11:36. Просмотров 624. Ответов 6
Метки нет (Все метки)

В общем вопрос достаточно простой, в чём разница указателя и сылки?
С одной стороны указатель это отдельный тип, отдельная ячейка в памяти, и при передаче параметра по указателю передается адрес обьекта, но с другой стороны сылка почти тоже самое? Она просто передает адрес обьекта в функцию. Хотелось бы узнать в чём разница (на уровне памяти).
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2012, 11:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель и ссылка (C++):

Указатель или ссылка на указатель. В чем разница? - C++
Есть вопрос про указатели и ссылки на указатели :scratch: Хочу в функциях f1() и в f2() динамически выделить память и возвратить этот...

Ссылка на указатель на указатель - C++
void TEST( int **&refptr, int const &N); int main() { int const N = 10; int i{ 0 }, b{ 2 }, *ptr{ &i, &b }; ...

Указатель и ссылка - C++
Почему выгодней использовать указатель а не ссылку при использовании массивов?

Ссылка на указатель - C++
Привет всем, пишу класс реализующий стек, объявил вершину стека как приватный элемент. Написал метод Push - который должен добавить в...

Ссылка на указатель - C++
Почему не работает такая конструкция? void SwapInt(void* p1, void* p2) { int* & tmp=static_cast<int*>(p2); } и как...

Указатель и ссылка - C++
Помогите понять, немного запутался. #include<iostream> using namespace std; void ch1 (int *pa1); int main() {

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.04.2012, 11:44 #2
Цитата Сообщение от OrmaJever Посмотреть сообщение
в чём разница (на уровне памяти)
на уровне памяти разницы нет
1
Bers
Заблокирован
29.04.2012, 11:45 #3
нету разницы.

Ссылка - тот же самый указатель, только её нельзя перенаправить на другой объект..
1
bz_
6 / 6 / 1
Регистрация: 10.04.2012
Сообщений: 31
29.04.2012, 11:48 #4
Ссылка лишь является разыменованным указателем. Но есть ситуации, когда предпотительнее использовать либо то, либо это.
0
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
29.04.2012, 12:45 #5
Ссылка - тот же указатель, только автоматически разыменовываемый при обращении и связываемый с объектом лишь единожды.
0
OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
29.04.2012, 13:23  [ТС] #6
3 коментария об одном и том же)))
Я частенько пишу на qt, и вот там некоторые методы возвращают указатель, а некоторые ссылку, наверно есть на то причина?

Добавлено через 4 минуты
Заметил что все методы которые возвращают сылку помечены как константные и возвращают константную сылку, но разве нельзя вернуть константный указатель?
0
Bers
Заблокирован
29.04.2012, 15:15 #7
Цитата Сообщение от OrmaJever Посмотреть сообщение
Заметил что все методы которые возвращают сылку помечены как константные и возвращают константную сылку, но разве нельзя вернуть константный указатель?
Присутствует идеологический смысл:

C++
1
2
3
//допускает, что аргументом может быть "ничего"
void foo(void* ptr0, void* ptr1, void* ptr2);
foo(null,null,null); //правомерно
C++
1
2
3
4
//хочет получать на входе только реальные объекты
void foo(CSome& agent0, CSome& agent1, CSome& agent2); 
 
foo(null,null,null); //сделать уже не получится
Работа с ссылками - это всегда работа с реальными объектами.
Работа с указателями - это работа с какими то адресами, но не с объектами. А именно с адресами.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2012, 15:15
Привет! Вот еще темы с ответами:

Ссылка на указатель - C++
Задам, скорее всего, глупый вопрос, однако хотелось бы разобраться. // ... { int *ptr = new int; int &x = *ptr; } ...

Ссылка(указатель) на вектор - C++
Добрый день! Немного загнался по поводу вроде простого кода: int main(){ vector<int> vct; vector<int>& ptrVct = vct; ...

Ссылка на функцию класса (не указатель) - C++
можно ли делать ссылки на функции класса? например класс: class cdPolygon2D : public draw { public: ...

Ссылка на указатель в аргументе функции - C++
при изучении примеров реализации бинарного дерева(в функции добавления нового узла)я увидел,что есть как такой вариант,когда аргумент...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.04.2012, 15:15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru