Короткое int состоит из двух байтов, в данном случае 0x00
и 0x01
. В системе с прямым порядком байтов младший байт идет первым, поэтому в памяти он выглядит как 0x01
, за которым следует 0x00
. Большие порядковые системы, естественно, обращены вспять. Вот как выглядят указатели для коротких целых чисел в системе с прямым порядком байтов:
----------------------- -----------------------
| 0x01 | 0x00 | | | |
----------------------- -----------------------
&word &word+1
С другой стороны, указатели на символы всегда увеличиваются последовательно. Таким образом, взяв адрес первого байта целого числа и приведя его к указателю char *
, вы можете увеличивать каждый байт целого числа в порядке следования памяти. Вот соответствующая диаграмма:
------------ ------------ ------------ ------------
| 0x01 | | 0x00 | | | | |
------------ ------------ ------------ ------------
&byte &byte+1 &byte+2 &byte+3