C で同じオブジェクトへの複数のポインターを正しく宣言するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-26 01:59:27
オリジナル
772 人が閲覧しました

How to Correctly Declare Multiple Pointers to the Same Object in C  ?

複数のオブジェクト ポインター宣言の明確化

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート