Когда вы используете char *
для псевдонима объекта другого типа, как вы делаете, это позволяет вам получить доступ к байтовому представлению этого объекта.
Значение 1025может быть представлен в шестнадцатеричном виде как 0x0401.Похоже, ваша система использует порядок байтов в младшем порядке для хранения целых чисел, что означает, что младшие байты появляются первыми в представлении.
Таким образом, если предположить, что int
- это 32 бита, то в вашей системе a
выглядит следующим образомв памяти:
-----------------------------
a | 0x01 | 0x04 | 0x00 | 0x00 |
-----------------------------
Указатель p0
указывает на первый байт, поэтому *p0
равен 1. Затем p0+1
указывает на следующий байт, поэтому *(p0+1)
равен 4.