函数指针数组的使用

...
...
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]所分配的空间是不同的。


你可能感兴趣的:(null,input)