2016-07-28 107 views
-3

我有以下功能函数指针

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

如何将参数传递给这个函数?

+0

只是传递正确类型的函数名。 –

回答

1

该函数原型声明了一个函数,它将函数指针的参数作为参数。每个函数指针的类型必须是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); 
}