Java/C++ではオブジェクト・インスタンスにメッセージを送ってその結果を受け取るとき、 result instance.message(parameter); のような記述となります。例えばPackからCardを一枚引き、Packに戻すJavaコードは: Pack pack = new Pack(); Card card = pack.deal(); // Cardを一枚引く pack.replace(card); // (引いたCardを)packに戻す 同様のことをCで行なうためのスタイルを考えてましょう。 まず、抽象データはその詳細を外部に公開してはならないので、ヘッダには構造体のポインタのみを公開します。 typedef struct card_struct* card; このとき、card_structの実際の構造(メンバ)はヘッダには明記せず、cardの実装部に置きます。