ポインター宣言での Const の配置: 解明された謎
C では、 const キーワードを使用して、次のいずれかのデータが指すデータを変更できます。ポインターまたはポインター自体。このことから、「const T」と「T const」の両方がなぜ有効であり、どちらを使用する必要があるのかという疑問が生じます。
歴史的起源
この一見恣意的な選択の理由は、C 言語の初期にまで遡ります。元の C 文法は、入力を左から右に解析し、各トークンを検出するたびに処理するように定義されていました。
アスタリスク (*) を含む宣言を解析する場合、パーサーは、トークンに遭遇する前に宣言の処理を完了します。定数。これは、宣言の意味論的な意味に影響を与えることなく、アスタリスクの前後に const を適用できることを意味します。
左から右への解析と修飾子の配置
この左から右への解析メカニズムは、関数ポインター宣言内の const の配置にも影響します。たとえば、「void function1(void)」は void を返す関数を宣言し、「void (* function2)(void)」は void を返す関数への関数ポインターを宣言します。
どの構文を選択するか
最終的に、使用する構文の選択は次のとおりです。好みの問題です。ただし、次のガイドラインが役立つ場合があります。
一般に、目的の不変性を明確に示すために、const を左側に配置することをお勧めします。データの。これは、共有ポインターや const オブジェクトへの参照を操作する場合、予期せぬ事態を避けるために特に重要です。
以上がC ポインターでの定数の配置: 左または右、それがなぜ重要なのか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。