『Cプログラミング診断室』目次次(第4章 キャストが好き いつもの問題)

第4章 キャストが好き

構造体


10行で、long型の3次元座標値がPOINT3という型に定義(typedef)されています。でも、その直 後の構造体内部では、x,y,zはそれぞれ別々になっています。せっかく3次元座標値を1つの型と して定義したのですから、それを利用しない手は無いです。

構造体を定義するための予約語structの直後の名前(構造体タグ)は、無くても構いません。こ の構造体タグは、構造体の名前となります。構造体の定義(struct)と、その構造体をtypedefで新 たな型として定義してしまうときには、構造体タグを省略して書くとすっきりしますね。元のリス トの2番目では、

構造体タグ名 ATCHING_DATA
型名     HATCHING
になっています。どうしても型名と構造体タグの両方を書きたい時は、下線(_)をつけるとか、せ いぜい大文字小文字の組み合わせを替えた程度にしてください。わざわざそんなことに頭を使い、 別の名前にし、誤解を招くような余分な努力はしない方がいいでしょう。

HATCHING型の構造体で、座標値を入れる配列のサイズが、MAXSIZEにより100に決められています。 これは、多分、100角形以上はありえないとの考えで、そのようになっているのでしょう。でも、 構造体の中に大きな配列(それも、普段はほんの一部しか使わないもの)を入れてしまうのはムダ です。座標値配列へのポインタだけを構造体の中に入れて、実際の座標値を入れる配列は、座標の 「数」に応じてmallocなどで動的に領域を確保すべきですね。

美しいパズルとは

ナンプレ問題
自動生成


これで、今日から
貴方もパズル作家

Cパズル
プログラミング
〜再帰編〜



Copyright1996 Hirofumi Fujiwara. No reproduction or republication without written permission
『Cプログラミング診断室』目次次(第4章 キャストが好き いつもの問題)