函数指针在函数参数中

时间:2016-07-28 13:43:16

标签: c function

我有以下功能

unsigned char foo(unsigned char(*fun[])(unsigned char *))

如何将参数传递给此函数?

1 个答案:

答案 0 :(得分:1)

该函数原型声明一个函数,该函数将参数作为函数指针的arraay。每个函数指针必须具有类型unsigned char function_name(unsigned char *)

例如,您可以这样做:(更改了传递的语句以简化示例)

#include <stdio.h>

unsigned char dummy(char *dummypar)
{

    printf("Dummy: %s\n", dummypar);

    return 0;
}

unsigned char dummy2(char *dummypar)
{
    printf("Dummy2: %s\n", dummypar);

    return 0;
}

unsigned char foo(unsigned char(*fun[])(char *))
{
    char *test = "test";
    size_t i = 0;

    while (fun[i] != NULL)
    {
        fun[i](test);

        i++;
    }

    return 0;
}

unsigned char(*array[])(char *) = { dummy, dummy2, NULL };

int main ( void )
{
    foo(array);
}