Два адреса при обращении к указателю

210
14 апреля 2018, 20:39

Есть код

#include <iostream>
using namespace std;
int main()
{
    bool *a = new bool(true);
    cout << a << endl;
    cout << *a << endl;
    cout << &a << endl;
}

И он выводит

0x4414f10
1
0x71d2e85b4548

Но что значат первое и третье число? Что из них адрес?

Answer 1

Первое число - адрес созданной с помощью new переменной типа bool.
Второе - значение этой переменной.
Третье - адрес переменной, в которой хранится первое значение.

Answer 2

Можно с комментариями:

bool *a = new bool(true);
// занимаем память в размере sizeof(bool*)  с именем 'a', где записываем
//адрес обьекта, созданная  в динамической памяти
// и занятая нами память для указателья имеет адрес 
cout << "адрес в динамической памяти _ " << a << endl;
cout << "значение обьекта            _ " << *a << endl;
cout << "адрес в локальной  памяти   _ " << &a << endl;

указатель занимает память в одно машинное слово. Это 4 байта или 8, зависит от машины.

READ ALSO
Есть ли КАРДИНАЛЬНАЯ РАЗНИЦА в функциях ниже (*не учитывая как осуществляется вызов)?

Есть ли КАРДИНАЛЬНАЯ РАЗНИЦА в функциях ниже (*не учитывая как осуществляется вызов)?

//*не учитывая как осуществляется вызов 1 или 2 способ (результат тот же)

202
QMultimedia::setPosition() не работает

QMultimedia::setPosition() не работает

Доброго времени сутокПишу mp3 плеер

200
Не могу понять ошибку No such slot

Не могу понять ошибку No such slot

Собственно пишет No such slot

191
Двоичный (бинарный) поиск (C++)

Двоичный (бинарный) поиск (C++)

Есть задание: Осуществить поиск указанного (с клавиатуры) элемента в массиве, используя указанный метод поиска)Метод поиска: Бинарный

196