Во время моего чтения CS: APP 3-го издания я наткнулся на этот фрагмент кода, который знает, читая книгу больше, я мог бы получить правильное объяснение, но до сих пор я не совсем понимаю, как это возвращает правильный шестнадцатеричный код номер.
Я надеюсь, что кто-то здесь сможет дать мне подробное объяснение.
Что делает приведение указателя на адрес куска памяти?
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer start, size_t len)
{
int i;
for (i = 0; i < len; i++)
printf(" %.2x", start[i]);
printf("\n");
}
void show_int(int x)
{
show_bytes((byte_pointer) &x, sizeof(int));
}
И как, я имею в виду, как целое число сохраняется в памяти, потому что, когда я печатаю его как% d с примером 100 в качестве данного int. будет напечатано:
100 0 0 0
однако, когда я использую 1000, он напечатает:
232 3 0 0