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

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

19.08.2018, 16:33. Показов 6629. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru