澄清多個物件指標聲明
在C 中,當在一行上聲明多個指針時,掌握細微差別至關重要。在提供的範例中,出現了關於兩個看似相似的程式碼片段之間的差異的問題。
範例 1:
<code class="cpp">private: sf::Sprite* re_sprite_hair, re_sprite_body, re_sprite_eyes;</code>
此聲明旨在建立三個指向sf::Sprite 物件。然而,它錯誤地創建了一個指標和兩個物件。緊接著 sf::Sprite 後的星號 () 僅適用於第一個變數 (re_sprite_hair),不適用於後續變數。
要修正此問題,應將聲明修改如下:
<code class="cpp">private: sf::Sprite* re_sprite_hair, *re_sprite_body, *re_sprite_eyes;</code>
這裡,每個變數都明確分配一個星號,建立三個不同的指標。
範例 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>
此版本聲明根據預期目的正確使用三個指標。使用“new”運算子在建構函數中正確初始化指標。
結論:
在單行上聲明多個指標時,放置星號至關重要與每個變數相鄰以避免混淆並確保準確的記憶體管理。
以上是如何在 C 中正確宣告指向同一物件的多個指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!