函数指针数组的使用

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值