170 похожих чатов

То есть неверно сказать, что переменная - это автоматически разыменовывающийся

указатель?...

22 ответов

11 просмотров

Их родство скорее со ссылками, кмк, имело бы смысл рассматривать, но вообще (почти применимо).

Каждый указатель - это переменная, но не каждая переменная указатель.

Sergey Anisimov
Не каждый, разумеется: (T*)nullptr.

Разумеется есть rvalue и прочая compile-time эзотерика, но если человек спрашивает "что такое указатель", то вряд ли ему сейчас стоит об этом знать.

Niceguy- Автор вопроса
Sergey Anisimov
Их родство скорее со ссылками, кмк, имело бы смысл...

Как раз такая мысль появилась после изучения ссылок

LaG1924
Разумеется есть rvalue и прочая compile-time эзоте...

1. Категории значений - отнюдь не эзотерика, они есть в каждом выражении. 2. Человек не спрашивает "что такое указатель".

Niceguy
Как раз такая мысль появилась после изучения ссыло...

Указатель – это как индекс в глобальном массиве памяти, а переменная – как значение одного или нескольких элементов вместе. Вы же не ставите равно между элементом массива и его индексом?

Ссылка - это как раз таки автоматически разыменовывающийся указатель.

LaG1924
Ссылка - это как раз таки автоматически разыменовы...

Очень грубо, но пусть будет так. Сейчас здесь сразу поправят.

Niceguy- Автор вопроса
LaG1924
Ссылка - это как раз таки автоматически разыменовы...

ну и как я понимаю, ссылка - это альтернативное название переменной, поэтому я и спросил про переменную, как автоматически разыменовающийся укзаатель

Ссылка - тоже переменная. И она действительно существует в памяти, это не просто синтаксичекий сахар, чтобы одну ячейку памяти (ака переменную) разными именами называть. Однако, если сравнивать ссылки и указатели, то ссылки - синтаксический сахар для указателей, который не допускает NULL значения.

LaG1924
Ссылка - тоже переменная. И она действительно суще...

И, опять же, это тоже не абсолютное положение: гарантий ее реального существования в памяти нет (и в этом смысле о ней действительно можно думать в некоторых ситуациях как о псевдониме): она даже не объект, программа не может получить ее адрес, в связи с чем пронаблюдать различия в поведении.

Sergey Anisimov
И, опять же, это тоже не абсолютное положение: гар...

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

LaG1924
Гарантий того, что написанный код сложения двух чи...

Изучите достаточно хорошо - не будет различаться. И на этот вопрос я однозначного ответа не решусь дать, но, видимо, решаетесь Вы (и ответ - "нет"), раз из этих соображений предлагаете утверждения с допущениями как абсолютные. Ваше право, разумеется, но причин даже не указывать наличие "крайних случаев" (которые еще и могут большую значимость иметь на практике) я, честно говоря, не вижу.

LaG1924
https://isocpp.org/wiki/faq/references#overview-re...

Ваш источник, кстати, оговаривает: > Underneath it all, a reference i to object x is typically the machine address of the object x. > typically И дополнительную повторяющую предостерегающую от подобного представления сноску предлагает.

Sergey Anisimov
Изучите достаточно хорошо - не будет различаться. ...

Есть академический интерес, и практический. Вы предоставляете правильный ответ, который потребует изучения, я же назвал грубое приближение к реальности, которое позволит использовать это знание гораздо быстрее. Пусть изучающий сам решит, что для него важнее сейчас - учиться писать правильный код, или просто писать код (плохой, не имеющий права жизни в чистовой кодовой базе, но который закроет практическую потребность прямо сейчас). Я бы с радостью сказал использовать Ваш ответ, а мои слова вообще забыть, но мы живём не в идеальном мире, увы.

Sergey Anisimov
Ваш источник, кстати, оговаривает: > Underneath it...

Да. Так и надо делать. Но в 98% случаев использования ссылок оно все же будет работать так, как легче понимать принцип их работы программисту на С. P.S. вопрос ко всем: как давно вы видели нетривиальное использование ссылок (или даже писали такой код 😱)? P.P.S. T* p = nullptr; T& r = *p;

LaG1924
Есть академический интерес, и практический. Вы пре...

Ничего не имею против грубого приближения, пока оно сопровождается соответствующим дисклеймером, о чем и написал. Иначе изучающий рискует даже не узнать о наличии альтернативы (или узнать несвоевременно).

Sergey Anisimov
Ничего не имею против грубого приближения, пока он...

Можно считать всю нашу дискуссию эдаким дисклеймером) А потребность в альтернативе точно даст о себе знать, когда в различных (частых) краевых случаях ожидаемое поведение будет не соответствовать происходящему.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Карта сайта