【问题标题】:Correct C pointer notation [closed]正确的 C 指针表示法[关闭]
【发布时间】:2025-12-12 10:10:01
【问题描述】:

哪一种写法最好:

string* str

或者:

string *str

其中一个有副作用吗?

谢谢

【问题讨论】:

标签: c++ c pointers coding-style


【解决方案1】:

选择第二个的原因是您一次声明多个变量:

string *str, *foo;
string* str, foo;

这两行是不同的,第一行声明指向指针,而第二行声明一个指向string 和一个string 的指针。

[FredOverflow 的评论] 这个问题可以通过一些模板魔法来解决;-)

template <typename T>
struct multiple
{
    typedef T variables;
};

multiple<string*>::variables str, foo;

【讨论】:

  • 谢谢,这正是我问这个问题的原因!
  • 感谢 FredOverflow 的编辑。
【解决方案2】:

虽然我更喜欢第一个,但有理由更喜欢第二个,请考虑:

string* str, a;
string *str, a;

在最后一种情况下,很明显* 仅适用于str。然而,使用这样的声明通常被认为是一种不好的风格。

【讨论】:

    【解决方案3】:

    我是这样做的:

    string *str;
    

    因为这样做会有所作为

    string *str, *str2;
    

    你也可以

    typedef string* stringPtr;
    

    这样你就可以做到

    stringPtr str, str2;
    

    【讨论】:

    • 到最后一个:不,你没有。 没有。
    【解决方案4】:

    在 C++ 中 - 两者都没有 - 这应该是 const string&amp; str

    还是 const string &amp;str ?嗯。

    【讨论】:

    • +1 表示“C++ 不是 C”的答案
    • 我什至经常写 const string & str 或 int * pInt :-)
    • +1 我同意。在 C++ 中,很少有真正需要原始指针的情况。
    • 我用字符串举了一个不好的例子......想象这是一个字符,你会明白我的意思......
    最近更新 更多