2011-07-14 29 views
4

次のコード行では、dup_func、free_func、およびclear_free funcの前にあるアスタリスクはどうなりますか?関数名の前にアスタリスクは何を意味しますか?

void *(*dup_func)(void *); 
void (*free_func)(void *); 
void (*clear_free_func)(void *); 
+2

?私はCを推測しているが、誰が知っている。 – aroth

+0

最初の意味は次のとおりです。[cdecl](http://cdecl.ridiculousfish.com/?q=void+*%28*dup_func%29%28void+*%29%3B) –

+0

[void(* a)(char *、char *);これは関数ですか?](http://stackoverflow.com/questions/5546867/void-achar-char-is-this-a-function) – outis

答えて

9

あなたの例では、それらがfunction pointersであることを意味します。一言で言えば

、彼らはあなたがこのようなことを行うことができ:

何語
void example() 
{ 
    printf("Example called!\n"); 
} 

void call_my_function(void (*fun)()) 
{ 
    printf("Calling some function\n"); 
    (*fun)(); 
} 

/* Later. */ 
call_my_function(example); 
+0

空のカッコは、古いスタイル(K&R C)であり、C99で廃止されています。 voidを意味するところに 'void'を追加してください。 – Jens

関連する問題