|
はじめまして、C言語を勉強中の素人です。
早速で申し訳なのですが、題名通り、関数ポインタについての質問です。
int plus(int x,int y)
{
return x+y;
}
という関数があったとして、この関数ポインタ変数を作成します
int (*func)(int,int)=plus;
この関数ポインタを使用する場合、
func(1,2);
という記述だと思います。
この時点では、関数名はポインタを持ち、ポインタ変数から関数を呼べるので、
関数を呼び出す際の()の働きは、配列の添え字演算子[]
みたいなものだと思っていました。
しかし、関数ポインタであることを明示化する記述の場合
(*func)(1,2);
と書くらしいのです。
変数funcがポインタである以上、*は逆参照演算子となるはずですよね?
なぜこのような記述が可能なのでしょうか?
なんとなくインライン関数みたいな働きをしてくれそうな気がしますが・・・
違いますね、絶対。
ちなみに、関数ポインタを使用して関数を呼び出すには
(func)(1,2);
でも可能でした。
コンパイラはVC++6.0です。
どうかよろしくお願いします。
|