c中指针箭头之间的空格

Don*_*nna 3 c standards pointers arrows

前几天我被告知我不应该在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 = "";
}
Run Code Online (Sandbox Code Playgroud)

我经常看到的

struct info *information;
information->x = 0;
Run Code Online (Sandbox Code Playgroud)

我只是想问一下,这只是一个常规的编码标准吗?我觉得 - >比p->东西更清洁.

unw*_*ind 11

从句法的角度来看,它无关紧要,它是无关紧要的空白.

我会说(无论如何)没有空格的风格更为常见.我发现它很好,因为它以某种方式反映了结构遏制的"紧密性".当然,我空格写几乎所有其他二元运算符,即

a->b = 1 + 2;
Run Code Online (Sandbox Code Playgroud)

永不

a -> b = 1+2;
Run Code Online (Sandbox Code Playgroud)

要么

a->b = 1+2;
Run Code Online (Sandbox Code Playgroud)

最后,这只是个人偏好.当然,在许多专业环境中,提升到"项目/公司风格指南决定了这就是它的完成方式,这里".

此外,当使用.运算符直接使用结构时,我也以相同的方式使用它.总是:

a.b = 1 + 2;
Run Code Online (Sandbox Code Playgroud)

永不:

a . b = 1+2;
Run Code Online (Sandbox Code Playgroud)

我认为以前的格式化对我来说a.b很有用,因为正如我上面所说的那样,运算符两侧的两个东西是同一个东西的一部分," "是一个术语,而不是两个.有了+,它的两个操作数是独立的,因此间距对我来说更有意义.


Som*_*ude 5

C是一种非常自由形式的语言,解析器会忽略空格(制表符,空格,换行符等).

information -> x = 0;
Run Code Online (Sandbox Code Playgroud)

是相同的

information->x=0;
Run Code Online (Sandbox Code Playgroud)

information
->
x
=
0
;
Run Code Online (Sandbox Code Playgroud)