Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943

Указатель на ссылку: как это использовать ?

19.08.2018, 16:33. Показов 6752. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток форумчане. Решил для себя разобраться полностью с указателями и ссылками и по ходу чтения инфы столкнулся с такой записью выражения
C++
1
Type &*x;
Согласно приоритету операторов у & и * приоритет одинаковый и если они встречаются вместе то нужно смотреть слева направо.

Это читается как указатель на ссылку если я не ошибаюсь и смысл вроде понятен, просто "указатель на ССЫЛКУ", но не могу понять как это использовать и чему надо это присвоить. Пытался даже методом перебора присвоить ему что нибудь но не получается.

Тут всё и так ясно, ссылка на указатель и ссылка на указатель на указатель
C++
1
2
3
4
    int *p1, **p2;
 
    int *&s1 = p1;
    int **&s2 = p2;
А здесь что то непонятно
C++
1
2
3
    int a = 1;
    int &aa = a;
    int &*x = aa;
Есть такое подозрение что ссылку на указатель нужно объявлять во время того как ты сам объявляешь ссылку, ведь ссылку же нельзя просто объявить а потом ей что то присвоить.
Типа что то такого
C++
1
int &*x = int &aa; // Не знаю мож бред говорю
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.08.2018, 16:33
Ответы с готовыми решениями:

Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать?
Подскажите, что значит константный указатель на объект, указатель на константный объект, и как это можно использовать??

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Указатель на ссылку или что это такое?
void add(char aData, Branch *&aBranch); Речь об аргументе aBranch. Как это понимать? Указатель на ссылку? Не понятно. Вроде такое не...

26
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
20.08.2018, 00:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от no swear Посмотреть сообщение
void f(int x[5]) - x[5] преобразуется в указатель(int *)
Осталось объяснить, при чём тут это вообще.

Добавлено через 4 минуты
Цитата Сообщение от Captain Maxee Посмотреть сообщение
эту строку убрали из-за возможности перегрузки операторов. Однако, для стандартных операторов это правило действует
Строку убрали, однако правило действует? Типа "Ленин умер, но дело его живёт"?
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.08.2018, 08:43
no swear, с операциями взятия адреса (&) и раскрытия (*) требуется осторожность и дисциплина. В объявлении они являются символами описывающими тип. А в коде они являются символами предписывающими действие. За исключением оператора && в котором первый символ - описатель для второго, а второй говорит - и-и-и...??
То есть, в выражении:
C++
1
reinterpret_cast<void *>(&x) == reinterpret_cast<void *>(x)
вы слева получаете адрес x и кастите к адресу на что-то там указатель на войд. А слева вы берёте значение самого x и поступаете с ним аналогично. То есть да, x может быть адресом либо физически либо по типу даже (если x сам по себе указатель), но обычно, такое выражение, это ярко недружественный жест по отношению к тем кто будет читать, включая себя). Последнее - простая констатация того факта, что старят нас именно проблемы (время - только одна из них). А это значит, что создав реальную трудность Вы состарите себя на год. Другими словами, Вы уже через неделю будете читать код, будто год его в глаза не видели. Ключевая фраза мультика "Следствие ведут колобки", - "Нич-ч-чего не понимаю!". "У меня - аналогично", иначе говоря.
Объявление параметра и передача аргумента, это тоже тонкость. no swear, в С ведь Вы не передаёте аргументом указатель беря его адрес, если параметром указан указатель. Это значит что звёздочка будет только в объявлении параметра. А при передаче она может появиться лишь если Вы разыменовываете что-то. Это, кстати может быть указатель на указатель. Но это встречается не часто.
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
20.08.2018, 10:34  [ТС]
IGPIGP, Благодарю за попытку объяснить мне что к чему, но по всей видимости я должен сам дойти до всего этого и доказать самому себе что так должно быть и так правильно и по другому быть не может
Спасибо что приняли участие в обсуждении
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.08.2018, 11:45
Цитата Сообщение от no swear Посмотреть сообщение
IGPIGP, Благодарю за попытку объяснить мне что к чему, но по всей видимости я должен сам дойти до всего этого и доказать самому себе что так должно быть и так правильно и по другому быть не может
Тут все хорошо высказались. Я может быть и усложнил. Но вот интересный момент.
Цитата Сообщение от no swear Посмотреть сообщение
так должно быть и так правильно и по другому быть не может
Мой опыт показывает, что довольно часто бывает так, что могло бы быть и подругому. И не хуже, а иной раз и лучше. Но есть именно то что есть. И с этим нужно жить.
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
20.08.2018, 12:12  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Но есть именно то что есть. И с этим нужно жить.
Да да да Вот я о том же, так что нужно привыкнуть к тому что хоть иногда нужно принимать некоторые вещи в таком виде в котором они существуют

Цитата Сообщение от rat0r Посмотреть сообщение
при чём тут это вообще.
Я имел ввиду что аргумент x[5] функции void f(int x[5]) принимает вид (int *) и неважно какое число записано в квадратных скобках
1
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
20.08.2018, 13:30
Цитата Сообщение от no swear Посмотреть сообщение
Я имел ввиду что аргумент x[5] функции void f(int x[5]) принимает вид (int *) и неважно какое число записано в квадратных скобках
Зато если объявите void f(int x[2][5]), то он будет всегда приводиться к void f(int (*)[5]). А void f(int x[3][2][5]) будет приводиться к void f(int (*)[2][5]). Потому что первый размер компилятору для определения элемента не нужен: https://www.cyberforum.ru/post12850295.html
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
20.08.2018, 20:24  [ТС]
TRam_, Тогда проще работать с одномерным массивом представляя его для себя как двумерный
C++
1
2
3
4
5
6
    int array[n * m];
    for(int i = 0; i < n; ++i) {
        for(int j = 0; j < m; ++j) {
            array[i * m + j];
        }
    }
В принципе также работает и указатель при обращении к какому либо элементу выделенному в куче
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.08.2018, 20:24

Как создать ссылку на двойной указатель?
Как создать ссылку на двойной указатель?

Как передать двойной указатель не через ссылку?
Не выводит значение двойного указателя. Скорее всего он уничтожается при выходе из функции, а как по другому передать и вернуть указатель...

Как указать ссылку на указатель в качестве формального параметра
Здравствуйте! Есть функция включения элементов в стек. Как правильно написать прототип функции. т.е. как указать ссылку на указатель в...

Как создать простейшую ссылку/указатель на ячейку памяти/переменную
Здраствуйте. Подскажите пожалуйста, как сделать простейшую ссылку/указатель на яч памяти. Скажем я использовал переменную А в ...

Как сделать указатель/ссылку на метод конкретного экземпляра класса
Добрый день. Подскажите можно ли в c++ каким либо образом объявить указатель/ссылку на функцию конкретного экземпляра класса и вызвать ее...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru