1

私はこの任務を遂行していますが、(スタートアップ資料から)理解できないことがいくつかあります。

typedef enum
{
    NORTH,
    EAST,
    SOUTH,
    WEST,
    NUM_POINTS
} Point;

typedef Point Course[NUM_POINTS] ;

最後の行の背後にあるアイデアがわかりません。コードでどのように使用できますか?

4

4 に答える 4

3

列挙型は0から始まり、値ごとに1ずつ増加します。

だからあなたは持っています:NORTH = 0、、、、、EAST = 1SOUTH = 1WEST = 3NUM_POINTS = 4

NUM_POINTS列挙型のアイテム数に設定されます。

最後の行は、4つの要素を含むポイント配列のCourseのエイリアスを作成します。Course配列の添え字はの後にあり、隣にはないため、構文は少し混乱しPointます。

typedef Point Course[NUM_POINTS] ;

ただし、たとえば次のように機能します。

int x[10];  

パーツは、タイプではなく変数名の[10]隣にあります。

于 2010-05-21T12:20:59.987 に答える
3
typedef a b;

タイプbのエイリアスを作成しますa。例:

typedef int foo;

int bar;
foo bar;

両方ともbar同等です。あなたの場合、

typedef Point Course[NUM_POINTS] ;

タイプ(where )のCourseエイリアスを作成します。Point[NUM_POINTS]NUM_POINTS == 4

Course baz;
Point baz[NUM_POINTS];

同等です。

于 2010-05-21T12:23:15.443 に答える
3

は列挙型の最後のエントリであるためNUM_POINTS、最も高い値を持ち、他の値のカウントです。ポイントの実際の値として使用することを意図していない場合NUM_POINTS、最後の行の目的は、「実際の」ポイントの数に等しいサイズのポイントの配列のタイプ名を作成することであるように見えます。

これが1つの優れた機能です。の前NORTH_EASTに列​​挙型に値( 、SOUTH_WESTなど)を追加しても、typedef行は自動的に正しくなります。これは、の前に新しい値が挿入されたためにの値が大きくなるためです。 NUM_POINTSNUM_POINTS

于 2010-05-21T12:33:24.470 に答える
0

これは、Courseを使用してポイントの配列を表すことができることを意味します。NUM_POINTSは配列内のアイテムの数です。

于 2010-05-21T12:23:25.503 に答える