4

gccを返す引数を取らない関数へのポインタとint foo(int (*f)(void))同じだと私に言っているようです。なぜここを省略できるのでしょうか。int foo(int (f)(void)) fint*

しかし、私も試しint (*p)(void)てみint (p)(void)ました。1つ目pは関数ポインタで、2つ目は関数です。

それで、何が起こっているのですか?どのような状況でアスタリスクを省略できますか?K&Rで調べたところ、何も見つかりませんでした。

4

1 に答える 1

7

Harbison and Steele (第 5 版、セクション 9.3) のコピーから引用するには:

パラメーター リストでは、型「T を返す関数」は、型「T を返す関数へのポインター」を持つように暗黙的に書き換えられます。

つまり、仮パラメーター リストのコンテキストでは、それらは同等です。他のコンテキストでは、それらは異なります。

スタイルの問題として、私は決して * を省略しません。

于 2013-01-07T11:50:28.033 に答える