1

enum を配列またはポインターとして渡すことはできますか。この種の質問をインターネットのどこかで聞きました。だから私はそれが何を意味するのかを確認したい。どうすればそれができますか?例?

4

2 に答える 2

3

他の配列と同じように:

#include <stdio.h>

enum colour {
    WHITE,
    RED,
    ORANGE,
    YELLOW,
    GREEN,
    BLUE,
    INDIGO,
    VIOLET,
    BLACK
};

char *colour_names[] = {
    "WHITE",
    "RED",
    "ORANGE",
    "YELLOW",
    "GREEN",
    "BLUE",
    "INDIGO",
    "VIOLET",
    "BLACK"
};

void show_colours(enum colour colours[], int count) {
    int i;

    for (i = 0; i < count; ++i) {
        printf("%s ", colour_names[(int)colours[i]]);
    }
    printf("\n");
}

int main(int argc, char **argv) {
    enum colour estonia[] = {BLUE, BLACK, WHITE};
    show_colours(estonia, 3);
    return 0;
}

出力:

BLUE BLACK WHITE 
于 2012-07-10T11:17:31.853 に答える
0

できません。つまり、持っている場合

typedef enum {
    ALFA,
    BRAVO,
    CHARLIE,
    DELTA
} Alphabet;

その情報をそのまま関数に渡す方法はありません。

できることは、整数の配列を宣言し、その配列に Alphabet の値を割り当てることです。

アルファベット ab[26] = { アルファ、ブラボー、チャーリー、... }

その時点で、他のポインターと同じように「ab」を渡すことができます。

于 2012-07-10T11:18:14.200 に答える