Предположим, у вас есть 16-разрядная машина с 65536 байт памяти. Интс - 2 байта. Предположим, что переменные помещаются в память смежно в том порядке, в котором они закодированы, начиная с адреса памяти 0x250. С учетом следующего сегмента кода:Устройства памяти и указатели
int x = 30;
int y = 50;
int *px = &x;
int *py = &y;
printf("a) %x\n", px);
printf("b) %x\n", py);
px = py;
printf("c) %d\n", *px);
printf("d) %x\n", &px);
x = 88;
y = 14;
printf("e) %d\n", *px);
printf("f) %d\n", *py);
Дайте выходные данные каждой инструкции printf.
Говорят, что адреса памяти распределяются в порядке возрастания.
Я получил
a) 252
b) 254
c) 30
d) 250
e) 88
f) 14
ли это правильно?
Это домашнее задание? – ouah
Каждый ответ, который вы указали выше 250, неверен. Они * могут * быть правильными, если вы включите префикс '0x', указав, что они шестнадцатеричные. –
Домашние вопросы разрешены, если вы показываете свои собственные усилия и где вы застреваете. Люди с большей вероятностью дают намеки, чем решения домашней работы, чтобы поощрять обучение. –