powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ccылки и указатели в Си++
25 сообщений из 31, страница 1 из 2
Ccылки и указатели в Си++
    #34889471
eugenia_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может вопрос и совсем глупый и не раз упоминавшийся, но все-таки....
Обьясните, пожайлуста, чем указатели отличаются от ссылок
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34889511
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eugenia_Может вопрос и совсем глупый и не раз упоминавшийся, но все-таки....
Обьясните, пожайлуста, чем указатели отличаются от ссылок

Наиболее эффективное использование C++ --- Скотт Мейерс

Правило 1.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34889642
Iggorrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wer
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34889645
Iggorrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ссылка - это разыменованный указатель.
как инь и янь.
как кот с собакой.
как доктор Ватсон и Хослмс.
как...
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34889647
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eugenia_ wrote:

> Может вопрос и совсем глупый и не раз упоминавшийся, но все-таки....
> Обьясните, пожайлуста, чем указатели отличаются от ссылок
Ссылку нельзя изменить, и должна быть инициализирована при объявлении.
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34889652
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iggorrr wrote:

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

Так что не неудачное сравнение, по-моему :)
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34889937
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eugenia_Может вопрос и совсем глупый и не раз упоминавшийся, но все-таки....
Обьясните, пожайлуста, чем указатели отличаются от ссылок

Указатель это объект, ссылка - это синоним. Так что это совершенно разные вещи, которые похожи при использовании, но имеют множество отличий.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34891774
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh wrote:

> Так что это совершенно разные вещи, которые похожи при использовании,
> но имеют множество отличий.
По-моему, и то и другое реализуется как адрес переменной (это если не
рассматривать чистый язык, и насчет ссылки такой гарантии нет,
впрочем), и отличие все-таки в ограничениях.
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34891797
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Akh wrote:

> Так что это совершенно разные вещи, которые похожи при использовании,
> но имеют множество отличий.
По-моему, и то и другое реализуется как адрес переменной ErV

Я, вот, в этом не уверен. Почему бы в некоторых случаях, когда это возможно, компилятору не использовать прямое обращение к объекту? Стандарт ограничения здесь не накладывает.

(это если не рассматривать чистый язык, и насчет ссылки такой гарантии нет,
впрочем), и отличие все-таки в ограничениях.


Идеология совершенно разная. Это как машина и перемещение.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34891847
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh wrote:

> Идеология совершенно разная.
Идеология - да, разная, но различие не сильное.
Но реализация (что мне встречалось) - все-таки адрес, как я помню...

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

--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34891895
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Akh wrote:

> Идеология совершенно разная.
Идеология - да, разная, но различие не сильное.
Но реализация (что мне встречалось) - все-таки адрес, как я помню...

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


увы не все так просто. Массив ссылок нельзя создать. А спрашивается почему, если это указатель?
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34891929
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh wrote:

> А спрашивается почему, если это указатель?
Мне кажется, что косвенно это из-за того, что нельзя:
1) взять ссылку на ссылку
2) взять указатель на ссылку

ЗЫ. Что вы имели в виду под "идеологией", теперь понятно, но, блин, все
равно килинит из-за того, что я знаю, что ссылка будет с очень хорошей
вероятностью представлена обычным адресом, т.е. будет указателем :-\ с
ограничениями...
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34891962
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вы даете. даже меня запутали
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34891972
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
ЗЫ. Что вы имели в виду под "идеологией", теперь понятно, но, блин, все
равно килинит из-за того, что я знаю, что ссылка будет с очень хорошей
вероятностью представлена обычным адресом, т.е. будет указателем :-\ с
ограничениями...


Да. Фактически это так.

Но лучше не думать о реализации. Знать конечно хорошо, но размышлять надо по другому. Указатель - это мы получаем некий объект и работаем с ним. Ссылка же - это мы получаем способ доступа к объекту и пользуется им. Понятия разные, и, в общем случае, вещи не эквивалентные мы с ними далаем, т.к. способ доступа входит в понятие работаем, в этом контексте.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34891984
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinну вы даете. даже меня запутали

Да, это блин не хухры мухры. ;) Когда я пытался разобаться, почему не сделали sizeof(A&)==sizeof(A*) и дать возможность создавать массивы ссылок, то у меня чуть башню не снесло.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892110
Hryuckinnen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, указатель - это адрес в памяти. Можете хоть случайное число взять, привести его к типу указателя, и оно будет на что-нибудь указывать. Можете (опять же если захотите) во время выполнения программы прибавить к нему 10, он будет указывать на что-нибудь другое.

Ссылка - это другое имя переменной. Ссылки обрабатываются на этапе компиляции. В компиляторе есть таблица переменных, в которой хранятся типы переменных, адреса и т.д., и таблица имён, в которой хранятся имена и ссылки на другие таблицы, где описано, что эти имена означают. Когда объявляется int i = 5; int &j = i; в таблице переменных создается одна запись, которая соответствует переменной i. А в таблице имен - две записи, одна для i и другая для j, которые ссылаются на одну и ту же запись в таблице переменных. Безумный ученый Страуструп придумал это для передачи изменяемых параметров в функции, потому что ему видите ли лень было писать void f (int *i) {*i = *i + 1;} Конечно, void f (int &i) {i = i + 1;} проще. А потом стал использовать этот механизм в качестве безопасного указателя, потому что нельзя забыть проинициализировать его, и нельзя его испортить.

В ПХП, где нет указателей, используется точно такой же механизм ссылок, но он описан в хелпе понятными словами.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892157
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HryuckinnenВ компиляторе есть таблица переменных, в которой хранятся типы переменных, адреса и т.д., и таблица имён, в которой хранятся имена и ссылки на другие таблицы,

А как же динамические переменные? Компилятор - телепат, и знает, какие и сколько создаться в процессе работы программы?
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892164
Hryuckinnen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Торможу... Пример можно?
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892177
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HryuckinnenТорможу... Пример можно?

Если компилятор состовляет таблицу переменных, то он должен знать о всех переменных, которые присутсвуют в программе. Но в программе на С++ частенько появляются динамические объекты созданные с помощью оператора new, а то и целые списки, таблицы, деревья этих объектов. Как компилятор заранее может знать обо всех этих переменных и записать их, с их адресами, в таблицу?
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892271
Hryuckinnen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Динамические переменные в таблицах не хранятся. Поскольку оператор new возвращает адрес созданного объекта, он используется в выражениях вида lvalue = new Чего-Нибудь, где lvalue - переменная-указатель, которая была объявлена и (в тот момент, когда компилятор разобрал её объявление) попала в таблицу.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892333
Hryuckinnen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: компилятор создаёт таблицы только для именованных объектов, введенных с помощью инструкций объявления, чтобы где-то хранить информацию о том, что же означают эти имена. С адресом я, возможно, погорячился: компиляторы C++ производят файлы объектного формата, в которых адреса статических объектов не фигурируют, только символические имена. Статические адреса потом вычисляются линкером. Хотя для автоматических объектов адрес представляет собой смещение от начала стекового кадра и вычисляется компилятором.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892341
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hryuckinnen

Чтож, тогда теория 2-х таблиц, в принципе, имеет право на жизнь.
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892359
Hryuckinnen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоит глянуть на какой-нибудь компилятор C++ с открытым исходником, gpp или что-нибудь типо того;)
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892454
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hryuckinnen wrote:

> В компиляторе есть таблица переменных, в которой хранятся типы
> переменных
Как я понимаю, если объявить
Код: plaintext
1.
2.
int asdf(int& a){
}
то (int &a) будет указателем, как ни крути. Т.е. она будет адресом, а не
другим именем.

Потом, извиняюсь, при чем тут таблица переменных? Она может быть на
этапе компиляции, но какой смысл в ней в готовом бинарнике? Там есть
единый(если не винда, то не факт, что единый :)) сегмент кода/данных и
информация о переменных там будет только если использовался type_info.
Для всего остального будет банальные несколько байт памяти и адрес.
Т.е. "другое имя" трансформируется адрес, а адрес == указатель.

--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ccылки и указатели в Си++
    #34892469
Hryuckinnen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про готовый бинарник никто не говорил. Таблицы сущестуют только в памяти компилятора. Обсуждалось, как компилятор разбирает конструкции типа int i; int &j = i; Что ксается формальных параметров, там ссылки действительно превращаются в указатели.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ccылки и указатели в Си++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]