【发布时间】:2012-02-14 16:14:05
【问题描述】:
【问题讨论】:
-
作为已作为副本关闭的问题的副本而关闭?不错。
-
跳过阅读基本的编程文本,转而去 Stack Overflow?认真的吗?
标签: c
【问题讨论】:
标签: c
如链接问题中所述,它们都是相同的(只需确保始终使用一个 - 特别是在使用现有代码库时)。
仅有的两个区别是:
第一种格式是 K&R 使用的。许多人在谈论 C 代码样式时默认使用 K&R。
int* p, x; 具有误导性,因为 x 是 int 而不是 int*,因此在使用第三种语法时要注意这个陷阱。
【讨论】:
这三个声明是等价的。
int *ptr; // Kernighan & Ritchie style
int* ptr; // Stroustrup style
【讨论】:
你试过了吗?是的,他们是。就我而言,我总是更喜欢第一种方式。但我不会在这里开始新的“格式化”战争;-(
【讨论】:
int *x?我一直不明白。您正在定义一个名为 x 的 int*,而不是一个名为 *x 的 int。 Qt IDE 实际上会自动更正到第一个版本... 是的。这主要是一个偏好问题,尽管根据我的经验,大多数人更喜欢第一个或第三个。
就个人而言,我更喜欢第一个,因为这样的情况:
int *ptr1, *ptr1;
而
int* ptr1, ptr2; /* ptr2 is NOT a pointer, needs another * before it to be one */
编辑:
需要明确的是,一个并不比另一个更正确,您应该选择对您最有意义的一个。最重要的是,在整个代码中始终使用一个可能是最重要的。
【讨论】:
int* ptr 从左到右阅读你说有一个指向整数的指针,叫做ptr,而int *ptr 你说有一个整数,不用等待,它是一个指向整数的指针……也就是说,我想强调指向 int 的指针是一种类型。而且我不鼓励在同一行中进行多重声明:)