関数ポインタの逆参照: 謎を解く
関数ポインタの逆参照は何も達成しないという想定に反して、C では独特の動作を開始します。関数ポインタは、コードとしてデータ メモリにアクセスする従来の意味では逆参照されません。 Memory.
代わりに、右辺値コンテキスト (提供されているコード例など) で関数ポインターを逆参照すると、元の関数へのポインターへの即時変換がトリガーされます。驚くべきことに、その後このポインタを逆参照すると、同じ関数値が取得され、その値はすぐにポインタに変換されて戻されます。このサイクルは無限に繰り返すことができます。
この動作は、lvalue コンテキスト (代入の左側など) で関数ポインターを調べるときに特に顕著になります。要素ポインターに変換される配列とは異なり、関数値は独自の型へのポインターに変換されます。したがって、左辺値コンテキストで関数ポインターを逆参照すると、そのポインターに新しい関数が割り当てられます。
関数値のポインターへの暗黙的な変換の背後にある理論的根拠は、純粋に実用的です。関数ポインターを使用するプログラマーにとって、& を広範囲に記述する必要がなくなります。逆に、呼び出し位置にある関数ポインタは自動的に関数値に戻り、* を使用して関数を呼び出す必要がなくなります。
以上がC で関数ポインタを逆参照するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。