...
...
void func1(void)
{
printf("func1\n");
}
void func3(void)
{
printf("func3\n");
}
void func5(void)
{
printf("func5\n");
}
void (*pfunc[])(void) =
{
NULL,
func1,
NULL,
func3,
NULL,
func5
};
int main()
{
int num;
while(1)
{
printf("Please input num(0 : Exit):\n");
scanf("%d", &num);
if(num == 0)
{
break;
}
/
if(num < (sizeof(pfunc)/sizeof(pfunc[0])))
{
if(NULL != pfunc[num])
{
pfunc[num]();
}
}
// switch(num)
// {
// default:
// break;
// case 1:
// func1();
// break;
// case 3:
// func3();
// break;
// case 5:
// func5();
// break;
// }
}
return 0;
}
利用函数指针数组代替 switch case
注意:在使用指针数组时要注意分配的空间:
int a[3][4]和int (*p[3])[4]所分配的空间是不同的。