我们可以将枚举作为数组或指针传递吗?我在互联网的某个地方听到过这种类型的问题。所以我想检查一下这是什么意思。我们怎么能这样做?例子?
问问题
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] = { ALFA, BRAVO, CHARLIE, ... }
此时,您将能够像传递任何其他指针一样传递“ab”。
于 2012-07-10T11:18:14.200 回答