哪个更合理 - char * string 还是 char* string?

34

我目前正在学习C ++,并且遇到了许多以null结尾的字符串。这使我思考,在声明指针时哪种方式更合理:

char* string
或者
char *string

? 对我来说,char*格式更有意义,因为"string"的类型是指向字符的指针,而不是字符。然而,我通常看到后一种格式。这同样也适用于引用。

请问是否有逻辑上的原因使用后一种格式?


std::wstring,当然。 - Hans Passant
第一种格式更有意义。您正在声明一个名为“string”的变量,其类型为char *,而不是具有char类型的名为“*string”的变量。人们直观地解析代码沿着空格边界,因此合理地格式化代码,使其在解析时具有有意义的读取方式。当然,下面的答案解释了为什么有时会使用违反直觉的约定。 - aroth
13个回答

2

个人而言,我从不在一行上声明多个变量。

因此,由于我真的觉得模式很好,我发现这种简单的模式很吸引人:

type varname

这意味着我几乎总是使用int [] iArray或int * piArray(或者无论匈牙利标记是什么,因为我已经十年没有使用C ++了)。
这也意味着我从不使用int iArray [],因为它是类型的一部分,而不是变量名。
这种思考方式有时也帮助我简化定义。
只是提供另一个观点。

2
"我已经十年没用过C++了",你最近有在使用Java吗?int[] iArray是Java的语法。 - curiousguy

1

我也认为在声明单个变量时使用char* foo更有意义。

我使用另一种格式的唯一情况是在一行上声明多个变量,例如:

char *foo,bar;


1

如果您每行只声明一个变量,那么第一种建议(char* var)就可以了,但是个人而言,我更喜欢“char *var;”和每行只有一个变量 - 这可能会使函数的行数更长,但非常清晰。

最后,C++应该使用“string var”,但我们总是要么继承带有“char *”的代码,要么连接到非C++库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接