enum を配列またはポインターとして渡すことはできますか。この種の質問をインターネットのどこかで聞きました。だから私はそれが何を意味するのかを確認したい。どうすればそれができますか?例?
1603 次
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 に答える