2016-12-11 10 views
0

私は上記の宣言がどのように機能し、どこで使用できるのか理解できません....まず、この宣言をCプログラミングでsignal.hファイルを使用しながら遭遇しました。void(* var_name)(data_type) - この宣言はどのように機能しますか?

+1

[cdecl.org](http://cdecl.org/?q=void+%28*var_name%29%28data_type%29) –

+0

([右回り/スパイラルルール]を参照してくださいます。http:// C -faq.com/decl/spiral.anderson.html)。 – e0k

+0

['signal()'](https://linux.die.net/man/2/signal)は、関数宣言の読み方、具体的には関数へのポインタの使い方を教えるために使用される素晴らしい古典実例です。 – e0k

答えて

2

これは、この例で

void (*var_name)(int)

関数ポインタdecalarationある、var_name 1つの引数、整数を取る関数へのポインタであり、それはボイドを返します。これは、 "* var_name"という関数を宣言しているかのように、intをとり、voidを返します。

Cで、私たちは構文で関数へのポインタを宣言することができます:* VAR_NAMEが関数の場合は、今、そしてVAR_NAMEは、機能

0

http://cyan-lang.org/jose/courses/06-2/lc/Ponteiros-para-Funcoes.htm

それはポルトガル語だに例のポインタでなければなりません

void (* f)(); 

この場合、fはパラメータを持たない関数へのポインタであり、voidを返します。 Fは、互換性のある関数を指すことができ:

F = maximum; 

最大は

void max() { 
    Puts ("Hi, I'm the max"); 
} 

最大値は以下の構文のいずれかを使用してFから呼び出すことができるように宣言された関数です。

(* F)();/* Maximum call */
F();/* Maximum call */
関連する問題