Поскольку, предполагая, что int является 32-битным на вашей целевой платформе, вы копируете 4 байта (0, 0, 0, 2
или 2, 0, 0, 0
, в зависимости от порядкового номера) в адрес, на который указывает addr
, и предполагаете, что short - 16-битный,Вы копируете 2 байта (0, 1
или 1, 0
, в зависимости от порядкового номера) по адресу, указанному addr+4
, в результате чего addr
содержит байты 0, 0, 0, 2, 0, 1
или 2, 0, 0, 0, 1, 0
.
Строки в стиле C в C ++ заканчиваются 0, поэтому, если первый символ равен 0, addr
интерпретируется как пустая строка.
Если первый символ равен 2, вы все равно ничего не увидите,потому что это не печатный символ. (Это управляющий символ STX (начало текста).)