【发布时间】:2011-10-22 20:58:30
【问题描述】:
我注意到有些人使用以下符号来声明指针变量。
(a) char* p;
而不是
(b) char *p;
我使用 (b)。符号 (a) 背后的理性是什么? 符号 (b) 对我来说更有意义,因为字符指针本身不是类型。相反,类型是字符,变量可能是指向字符的指针。
char* c;
这看起来像有一个类型 char* 并且变量 c 是那个类型。但实际上类型是 char 并且 *c(c 指向的内存位置)属于该类型(char)。如果你一次声明多个变量,这种区别就很明显了。
char* c, *d;
这看起来很奇怪。 c 和 d 都是指向字符的相同类型的指针。在这个因为下一个看起来更自然。
char *c, *d;
【问题讨论】:
-
char 指针不是类型是什么意思?你是说指针不是类型?
-
我相信这是一个偏好问题,除非您正在查看特定的样式指南(即您的公司可能有您必须遵循的特定编码标准)。我倾向于在选项 b 和中间的某个位置之间混淆。有时我觉得
char *t看起来不合适,所以我可能会改用char * t;。不过,我也经常看到char* t;。 -
另外,你的推理“类型是char并且*c(c指向的内存位置)是那个类型(char)”似乎表明存在一个 char 被声明,而实际上没有。如果它被这样对待,就像初学者有时那样,它肯定会导致内存访问冲突。
-
两者仍然具有足够的描述性,(b) 表明 *p 是
char类型,(a) 表明 p 是pointer to a char -
拥有十多年的行业经验,今天是第一次出现这种情况,而且只是阅读其他行业专业人士的文章。显然,那么,我从来没有像使用制表符 v 空格、def 或 dec 的 cmets 或任何其他“没有什么更重要的争论”话题那样,就这些话题进行过宗教对话.这是我的观点,在我职业生涯的最后阶段,我更喜欢经常使用“char * p”。是的,空间之前,空间之后。主要是因为我发现它减少了错误,因为它使指针更加明显。
标签: c++ c pointers coding-style