Это выглядит хорошо для меня. Линия:
(pst1 + np1)
добавляет np1
экземпляров st_one
к тому, на что указывает pst1
, что означает, что значение pst1
s увеличивается на np1 * sizeof (st_one)
байт, что составляет 25 (sizeof = 5), что соответствует значениям вы вывели. Вместо вышесказанного, я думаю, вы хотели:
(pst1 + 1)
Значение pc1
работает, потому что это указатель char
, поэтому строка:
(pc1 + np1)
добавляет np1 * sizeof (char)
байтов к pc1
, что составляет 5 байтов.
При увеличении указателя указатель указывает на следующий элемент в памяти, а не на следующий байт.