LINUX.ORG.RU

История изменений

Исправление lv, (текущая версия) :

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

Например:

Если желательно добиться «вызова по ссылке», можно неявно передать указатель, и функция сможет изменить объект, на который этот указатель указывает.

Ведь это именно речь о функциональности - иметь возможность менять объект, передав его адрес.

Но если мы говорим «ссылка» и «указатель», то мы и в том и в том случае говорим об синтаксическом сахаре. Указатель - это тоже всего лишь число. И только то, что мы объявили его указателем даёт возможность применять к нему соответствущий синтаксис. Рассматривать это значение за меткой как адрес, а не как число.

А вот если у нас ссылка, то синтаксис с ней другой.

И то и другое - абстракции уровня и синтаксиса и семантики, и различия на этих уровнях говорят о том, что и сущности разные.

Различия в семантике: Интерпретация указателя - значение под меткой - адрес. Антерпретация l-value ссылки - значение под меткой - значение. (А то, что это ссылка означает лишь, что ещё есть метка, которая указывает на то же згачение. И если его изменить по одной из меток, то оно изменится и под другой, то есть это метки одного куска памяти).

Что у них общего, на что вы, видимо, упираете - это то, что и там и там используется адрес. Ну так поверх этого адреса много всякого ещё наворачивается.

Исходная версия lv, :

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

Например:

Если желательно добиться «вызова по ссылке», можно неявно передать указатель, и функция сможет изменить объект, на который этот указатель указывает.

Ведь это именно речь о функциональности - иметь возможность менять объект, передав его адрес.

Но если мы говорим «ссылка» и «указатель», то мы и в том и в том случае говорим об синтаксическом сахаре. Указатель - это тоже всего лишь число. И только то, что мы объявили его указателем даёт возможность применять к нему соответствущий синтаксис. Рассматривать это значение за меткой как адрес, а не как число.

А вот если у нас ссылка, то синтаксис с ней другой.

И то и другое - абстракции уровня синтаксиса, и поэтому синтаксические различия говорят о том, что и сущности разные.

Интерпретация указателя - значение под меткой - адрес. Антерпретация l-value ссылки - значение под меткой - значение. (А то, что это ссылка означает лишь, что ещё есть метка, которая указывает на то же згачение. И если его изменить по одной из меток, то оно изменится и под другой, то есть это метки одного куска памяти).