[有人问到声明中的空白符问题,例如:double *p与double* p. Mark Brader 将这封邮件回复给了提问者,同时也抄送给我,并允许我在此处包含该回复。]
发件人: Mark Brader
主题: 回复:新手指针问题
消息 ID: <9509101928.AA26628@sqrex.sq.com>
密送: scs@eskimo.com
没有区别;这只是风格的选择。C语言中,标点符号旁边的空格只有在以下四种情况下才重要:
在字符串字面量内部,例如:" this "
在字符常量内部,例如:' '
当它用于阻止两个字符组合成另一个具有不同含义的组合时,例如:
x = y / *p;你不想形成/*注释符号;以及
在对象式宏(没有参数列表的宏)的定义中,宏名称之后,宏体以一个(字符开头(因此看起来像函数式宏的参数列表),例如:
#define X (z)它定义了X展开为(z),而如果X之后的空格被省略,它将定义X带有单个参数,并展开为无内容的宏。
除了上述例外,您可以自由地在所有标点符号旁边使用或不使用空格,无论哪种方式使程序对读者来说更容易理解。
有些人选择这样写
double* p;
因为他们认为这样更清楚地表明这声明了p为一个double *。 然而,
double* p, q;
声明了p为double *和q为double,而不是double *。 所以在这种情况下,这种风格非常具有误导性。 另一种风格
double *p, q;
对于此声明更清晰,因此大多数人然后在第一个声明中使用它
double *p;
因为一致性也有助于清晰度。
未发布是因为我想象其他人会说同样的事情。 如果你认为它会有所贡献,请随意发布此内容。
Mark Brader | "It's simply a matter of style, and while there msb@sq.com | are many wrong styles, there really isn't any SoftQuad Inc., Toronto | one right style." -- Ray Butterworth