如何在没有typedeffing的情况下在一行中声明多个函数指针?

时间:2013-08-24 04:22:11

标签: c pointers function-pointers

更多的是好奇心而不是任何事情。基本上我想知道是否可以在一行中声明多个函数指针,如:

int a = 1, b = 2; 

使用函数指针?无需诉诸typedef

我已经尝试void (*foo = NULL, *bar = NULL)(int)了。不出所料,这没有用。

2 个答案:

答案 0 :(得分:10)

尝试如下:

void (*a)(int), (*b)(int);

void test(int n)
{
    printf("%d\n", n);
}
int main()
{
    a = NULL;
    a = test;
    a(1);
    b = test;
    b(2);
    return 0;
}

修改

另一种形式是函数指针数组:

void (*fun[2])(int) = {NULL, NULL};

void test(int n)
{
    printf("%d\n",n);
}
int main()
{
    fun[0] = NULL;
    fun[0] = test;
    fun[0](1);
    fun[1] = test;
    fun[1](2);
}

答案 1 :(得分:4)

void (*foo)(int) = NULL, (*bar)(int) = NULL;

或正如Grijesh所说:

int main(void) {
    int a[5], b[55];
    int (*aa)[5] = &a, (*bb)[55] = &b;
    return 0;
}