То, что вы здесь делаете, сохраняет адрес b
в a
.При разыменовании a
теперь вы получаете то, что хранится в b
, который является адресом того места, где хранится ваша книга, а не самой книгой.На самом деле, я думаю, что вы должны получить ошибку сегментации при попытке доступа к a->pages
, потому что эта память даже не была выделена.
Так что я думаю, что вы хотите сделать здесь, это сделать a
указатель ната же самая структура book
, что и b
, которую вы можете получить, выполнив
book *a = b;