2012-02-25 8 views

答えて

9

を:

void foo(int x); 

をそして、あなたは、次のポインタ定義されています:

void (*ptr)(int) = foo; 
は、

"ptr"でfooを実行すると、次のようになります。

ptr(12); //actually calls foo(12); 
+2

'declaration-follows-use'ルールでは '(* ptr)(12)'のように呼び出すこともできます。関数ポインタは、逆参照がポインティングされた値にアクセスするためにポインターが必要でないという点で特別である。関数は逆参照され、同じ値を返すことができる点で特別です: '(***** ptr)(12)'。 – bames53

4

あなたが他の関数を実行したいのと同じ方法:あなたが機能した場合は、次の署名がある

foo(); 
2

あなたの関数ポインタがfpであるとします。

fp(3); 

または

(*fp)(3); 

2つの方法が同等であるが、両方が自分の長所を持っている:

void (*fp)(int); 

あなたが関数ポインタから関数を呼び出すには二つの方法があります。 2番目の形式では、プログラムにfpという機能はありませんが、fpは関数ポインタです。

関連する問題