Есть ли объяснение этому поведению? - PullRequest
0 голосов
/ 16 января 2019

Адрес памяти показывает два разных значения.

У нас есть переменная const (a), и мы помещаем адрес переменной в два указателя (b и c). После изменения значения по адресу в одном из указателей (c) у нас возникла ситуация, когда один и тот же адрес памяти имеет два разных значения. Есть ли объяснение этому поведению?

#include <iostream> 
int main(void)
{
    const int a = 99;
    const int *b = &a;
    int *c = (int *)b;
    std::cout << &a << " - " << a << '\n';
    std::cout << b << " - " << *b << '\n';
    std::cout << c << " - " << *c << "\n\n";
    *c = 61;
    std::cout << &a << " - " << a << '\n';
    std::cout << b << " - " << *b << '\n';
    std::cout << c << " - " << *c << '\n';
    return 0;
}

// вот результат (вывод)

003CFAA4 - 99 003CFAA4 - 99 003CFAA4 - 99

003CFAA4 - 99 003CFAA4 - 61 003CFAA4 - 61

...