複数のオブジェクト ポインター宣言の明確化
C で 1 行で複数のポインターを宣言する場合、ニュアンスを把握することが重要です。提供された例では、一見似ている 2 つのコード スニペットの違いに関する疑問が生じます。
例 1:
<code class="cpp">private: sf::Sprite* re_sprite_hair, re_sprite_body, re_sprite_eyes;</code>
この宣言は、次の 3 つのポインターを作成することを目的としています。 sf::Sprite オブジェクト。ただし、誤って 1 つのポインターと 2 つのオブジェクトが作成されます。 sf::Sprite の直後にあるアスタリスク () は、最初の変数 (re_sprite_hair) にのみ適用され、後続の変数には適用されません。
これを修正するには、宣言を次のように修正する必要があります。
<code class="cpp">private: sf::Sprite* re_sprite_hair, *re_sprite_body, *re_sprite_eyes;</code>
ここでは、各変数に明示的にアスタリスクが割り当てられ、3 つの異なるポインターが作成されます。
例 2:
<code class="cpp">public: Entity() { re_sprite_eyes = new sf::Sprite(); re_sprite_hair = new sf::Sprite(); re_sprite_body = new sf::Sprite(); } private: sf::Sprite* re_sprite_hair; sf::Sprite* re_sprite_body; sf::Sprite* re_sprite_eyes;</code>
このバージョンでは次のように宣言されます。 3 つのポインタを意図した目的に従って正しく使用してください。ポインタは、'new' 演算子を使用してコンストラクタ内で適切に初期化されます。
結論:
単一行で複数のポインタを宣言する場合、アスタリスクを配置することが重要です。混乱を避け、正確なメモリ管理を確保するために、各変数を隣接して配置します。
以上がC で同じオブジェクトへの複数のポインターを正しく宣言するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。