Я не понимаю, почему выводит разные значения, разве ссылка не должна неявно преобразовываться в указатель на mas?
int mas[5] = {1, 2, 3, 8};
const int *ptr = mas;
qDebug() << &ptr // Output: 0x28fe30;
qDebug() << ptr // Output: 0x28fe34;
В вашем коде нет ссылок, &ptr является указателем на указатель.
Не нулевой указатель, является последовательностью битов, т. е. занимает место в памяти, если он ссылается на обьект или на другой указатель. Значение указателья это адрес обьекта obj. Мы говорим, что данный указатель указывает на obj.
Ссыльки не занимают место в памяти, они лишь являются именами (индентификаторами).
Т. е. мы обращаемся со ссылькой на обьект obj также, как обратились бы к самому obj...
У тебя амперсанд указывает, что ты обращаешься к области памяти, где лежит твой указатель ptr. То есть выводишь адрес ЭТОГО указателя. Во втором случае ты обращаешься к ДАННЫМ в области памяти, на которую указывает ptr, поэтому и результат разный. То есть тут амперсанд берет адрес адреса ячейки массива. Если я правильно понимаю)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости