[C++] Фигня какая-то с указателями
static int i = 777;
static int* p = &i;
cout << *(&i+4) << endl;
Почему не выводит 777? &i - адрес i, +4 - смещение до указателя, * - разыменование.
помог jura2922079:
>> если разименовывать адрес, то получится значение переменной, то есть *(&p) = это значение переменной, то есть
>> 0xC77000, а чтобы добраться до значения указателя, надо ещё раз разименовать, то есть:
>> cout << *((int*)*(&i+1)) << endl; даст как раз 777