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很有用,因为正如我上面所说的那样,运算符两侧的两个东西是同一个东西的一部分," "是一个术语,而不是两个.有了+,它的两个操作数是独立的,因此间距对我来说更有意义.
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)