2016-07-28 110 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); 
}