函数指针数组的指针

时间:2021-04-01 18:57:49


下面定义一个简单的函数指针数组的指针:

char* (*(*pf)[3])(char* c);


pf是一个指针,这个指针指向一个有3个元素的数组,每个元素是一个参数为char* ,返回值为char *的指针。

示例:

#include <stdio.h>
#include <string.h>

char* func1(char* c)
{
    printf("%s\n", c);
    
    return c;
}

char* func2(char* c)
{
    printf("%s\n", c);
    
    return c;
}

char* func3(char* c)
{
    printf("%s\n", c);
    
    return c;
}

int main()
{
    char* (*a[3])(char* c);
    char* (*(*pf)[3])(char* c);
    pf = &a;
    
    a[0] = func1;
    a[1] = func2;
    a[2] = func3;
    
    printf("%p\n", a[0]);
    printf("%p\n", a[1]);
    printf("%p\n", a[2]);
    
    (*pf)[0]("func1"); // *pf[0][0]("func1");
    (*pf)[1]("func2"); // *pf[0][1]("func2");
    (*pf)[2]("func3"); // *pf[0][2]("func3");
    
    return 0;
}

函数指针数组的指针