Разница между указателем и ссылкой

182
22 февраля 2018, 14:48

Я не понимаю, почему выводит разные значения, разве ссылка не должна неявно преобразовываться в указатель на mas?

int mas[5] = {1, 2, 3, 8};
const int *ptr = mas;
qDebug() << &ptr // Output: 0x28fe30;
qDebug() << ptr // Output: 0x28fe34;
Answer 1

В вашем коде нет ссылок, &ptr является указателем на указатель.

Answer 2

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

Answer 3

У тебя амперсанд указывает, что ты обращаешься к области памяти, где лежит твой указатель ptr. То есть выводишь адрес ЭТОГО указателя. Во втором случае ты обращаешься к ДАННЫМ в области памяти, на которую указывает ptr, поэтому и результат разный. То есть тут амперсанд берет адрес адреса ячейки массива. Если я правильно понимаю)

READ ALSO
Асинхронное выполнение функции

Асинхронное выполнение функции

Функция, которая принимает параметры:

237
вектор классов - обращение

вектор классов - обращение

Есть класс, есть вектор векторов этого классаКак обратиться к элементу класса через вектор векторов?

215
Попытка отсортировать массив

Попытка отсортировать массив

Неиспользуемые переменные

193
Записать рекуррентную формулу иначе C++

Записать рекуррентную формулу иначе C++

Проблема в том что при вычислении не хватает памяти и считает только до 7 символов после запятой, нужно чтобы считало хотя бы 10 символов после

227