Re[4]: Не могу понять ссылки в C++
От: Stanislav V. Zudin Россия  
Дата: 16.06.24 18:02
Оценка: +3
Здравствуйте, r0nd, Вы писали:

R>>- У указателя есть адрес, а у ссылки нет;


R>У всего есть адрес, в том числе и ссылок:


R>
#include <stdio.h>

R>static char b = '1';

R>int main()
R>{
R>    char& a = b;
R>    char* c = &b;

R>    printf("0x%x, 0x%x, 0x%x", &a, c, &b);

R>    return 0;
R>}
R>


Извиняюсь, что встреваю в разговор, но ты смотрел, что выводит твой код?

Program returned: 0
0x404018, 0x404018, 0x404018


"&a" возвращает, как и ожидается, ни что иное, как адрес объекта, на который ссылается ссылка.

В зависимости от контекста ссылка может работать как ненулевой указатель, поэтому в первом примере sizeof(aa) == sizeof(bb).
А может работать как псевдоним на уровне исходного кода, это демонстрирует второй пример.
Об этом выше уже упоминали.
_____________________
С уважением,
Stanislav V. Zudin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.