在一行中声明多个指针:理解语法
在 C 中的一行中声明多个对象指针时,一个常见的陷阱如果语法没有正确理解,就会出现这种情况。考虑以下代码:
<code class="cpp">private: sf::Sprite* re_sprite_hair; sf::Sprite* re_sprite_body; sf::Sprite* re_sprite_eyes;</code>
此代码成功声明了三个指向 sf::Sprite 类型对象的指针。但是,将语法更改为以下格式会导致编译器错误:
<code class="cpp">private: sf::Sprite* re_sprite_hair, re_sprite_body, re_sprite_eyes;</code>
原因:
这两个声明之间的区别在于存在第二个版本中的星号 *。在 C 中,星号表示指针的声明。省略时,它会导致对象本身的声明。
在第一个版本中,每个变量都有一个星号,表示这三个变量都是指针。在第二个版本中,星号仅应用于re_sprite_hair,使其成为一个指针,而re_sprite_body和re_sprite_eyes成为sf::Sprite类型的对象。这种不正确的语法会导致出现编译器错误。
正确的语法:
要在单行上正确声明多个指针,使用星号至关重要每个变量。正确的语法是:
<code class="cpp">private: sf::Sprite* re_sprite_hair, *re_sprite_body, *re_sprite_eyes;</code>
通过将星号应用于每个变量,编译器将所有三个都识别为指针,并且声明是有效的。
以上是如何在 C 中的单行中正确声明多个指针?的详细内容。更多信息请关注PHP中文网其他相关文章!