ポケットモンスターというゲームをご存知でしょうか?
ポケモンでは、自分が捕まえたポケモンのデータはてんでバラバラです。
しかし、ポケモン1匹に対するステータスは大量にあります。
名前, ニックネーム, レベル, 経験値, HP, 攻撃力, 防御力, 特殊攻撃力, 特殊防御力, 素早さ, なつき度, などです。

これらのデータを全て個別の変数で宣言するとなると大変です。
名前も統一しなければなりませんし、10個の変数が必要です。

しかし、これらの変数をまとめて1つの変数にすることができるのです。
違う型であってもです。

struct 変数名 {
 メンバ;
};


115


このように、構造体を作成することで関連するデータをまとめることができます。
PokeDate1というのはあくまで汎用的なデータに過ぎません。

例えばピカチュウを捕まえた時に、PokeDate1のデータをPokeDate1型のHolding1変数へコピーすることができます。すると、Holding1のデータはピカチュウレベル1のデータとなるのです。

構造体に関しては、正直今から使いこなそうとする必要はありません。
C++では違う使い方をしますし、大量の変数を使う機会ができた時にまた考えれば良いでしょう。

C++では、構造体の代わりにより拡張された概念であるclassを使用します。

また、ポケットモンスターシリーズは任天堂と株式会社ポケモンの知的財産です。