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

C 在没有typedeffing的情况下,如何在一行中声明多个函数指针?,c,pointers,function-pointers,C,Pointers,Function Pointers,更多的是好奇,而不是什么。基本上,我想知道是否可以在一行中声明多个函数指针,比如: int a = 1, b = 2; 使用函数指针?无需求助于typedef 我尝试了void(*foo=NULL,*bar=NULL)(int)。毫不奇怪,这不起作用 void (*foo)(int) = NULL, (*bar)(int) = NULL; 或者正如格里耶什所说: int main(void) { int a[5], b[55]; int (*aa)[5] = &a,

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

int a = 1, b = 2; 
使用函数指针?无需求助于
typedef

我尝试了
void(*foo=NULL,*bar=NULL)(int)
。毫不奇怪,这不起作用

void (*foo)(int) = NULL, (*bar)(int) = NULL;
或者正如格里耶什所说:

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

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);
}

虽然我猜对了,但我不得不说我以前从未见过(有充分的理由)或尝试过这种方法。在混乱的代码世界中功能强大。。。只需要几个def就可以将它们表示为6个下划线,这样您就成功了!是的,在
test(){}
之后以@GrijeshChauhan的形式编写声明,我认为我刚刚编辑的第二种形式更可能是R.D.想要的形式,但是响应非常好,回答非常好。您可能希望添加类似的数组声明指针:
int(*a)[5],(*b)[7]这是一个