前几天我收到通知,我不应该在c中以某种方式使用指针箭头。我做的是这个:
struct info {
int x;
char *data;
}
int main() {
struct info *information;
information -> x = 0; /*Notice the spacing here between information and -> x*/
information -> data = "";
}
我经常看到的
struct info *information;
information->x = 0;
我只是想问一下,这只是一个常规的编码标准吗? 我觉得 - >比p->东西更清洁。
答案 0 :(得分:10)
从句法的角度来看,它无关紧要,它是无关紧要的空白。
我会说(在某种程度上)没有空格的风格更为常见。我发现它很好,因为它以某种方式反映了结构遏制的“紧密性”。当然,我用空格写了几乎所有其他二元运算符,即
a->b = 1 + 2;
永远不会
a -> b = 1+2;
或
a->b = 1+2;
最后,这只是个人偏好。当然,在许多专业环境中被提升为“项目/公司风格指南决定了这是如何完成的,在这里”。
此外,当使用.
运算符直接处理结构时,我使用相同的方法。总是:
a.b = 1 + 2;
永远不会:
a . b = 1+2;
我认为以前的格式化对我来说很有用,因为正如我上面所说的那样,运算符两边的两个东西是同一个东西的一部分,“a.b
”是一个术语,而不是两个。对于+
,它的两个操作数是独立的,因此间距对我来说更有意义。
答案 1 :(得分:5)
C是一种非常自由形式的语言,解析器会忽略空格(制表符,空格,换行符等)。
information -> x = 0;
与
相同information->x=0;
和
information
->
x
=
0
;
答案 2 :(得分:1)
这是一个品味问题,因此可能更适合https://softwareengineering.stackexchange.com/。
一般来说,我认为标准是没有空间。在我的C代码中,我将算术运算符编写为x + y
等,将成员访问运算符编写为a->y
等。这是因为成员及其所有者可以是“一个单位”,而算术是对多个不同值的操作,其唯一关系是它们碰巧在表达式中一起使用。另一方面,成员或从根本上与其所有者联系在一起,缺乏空间意味着这一点。
使用你喜欢的任何一个 - 它没有太大的区别。不过,如果你想更频繁地知道使用的是什么,那就是无空间版本。