ホームページ >バックエンド開発 >C++ >C で関数ポインタを逆参照するとどうなりますか?

C で関数ポインタを逆参照するとどうなりますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-19 12:13:20137ブラウズ

What Happens When You Dereference a Function Pointer in C?

関数ポインタの逆参照: 謎を解く

関数ポインタの逆参照は何も達成しないという想定に反して、C では独特の動作を開始します。関数ポインタは、コードとしてデータ メモリにアクセスする従来の意味では逆参照されません。 Memory.

代わりに、右辺値コンテキスト (提供されているコード例など) で関数ポインターを逆参照すると、元の関数へのポインターへの即時変換がトリガーされます。驚くべきことに、その後このポインタを逆参照すると、同じ関数値が取得され、その値はすぐにポインタに変換されて戻されます。このサイクルは無限に繰り返すことができます。

この動作は、lvalue コンテキスト (代入の左側など) で関数ポインターを調べるときに特に顕著になります。要素ポインターに変換される配列とは異なり、関数値は独自の型へのポインターに変換されます。したがって、左辺値コンテキストで関数ポインターを逆参照すると、そのポインターに新しい関数が割り当てられます。

関数値のポインターへの暗黙的な変換の背後にある理論的根拠は、純粋に実用的です。関数ポインターを使用するプログラマーにとって、& を広範囲に記述する必要がなくなります。逆に、呼び出し位置にある関数ポインタは自動的に関数値に戻り、* を使用して関数を呼び出す必要がなくなります。

以上がC で関数ポインタを逆参照するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。