C - 指针的初始化,星号位置

psi*_*lia 19 c

放置星号最合适的方法是什么?为什么?

1)    type*     var;
2)    type      *var;
Run Code Online (Sandbox Code Playgroud)

Sub*_*niC 23

只要你声明一个指针就没关系了.它通常写在第二个例子中(在我通常读/写的代码中),但对于编译器它是相同的.

如果要声明多个指针,则可能会出现问题.例如,这不是声明两个指针,而是声明一个指针和一个类型类型的var.

type* var1, var2;
Run Code Online (Sandbox Code Playgroud)

你需要改为:

type* var1, *var2;
Run Code Online (Sandbox Code Playgroud)

我更喜欢总是使用*.


Joh*_*ski 6

指针是类型,我认为对类型信息进行分组是最有意义的:

int* foo;
Run Code Online (Sandbox Code Playgroud)

如果在同一行上定义了多个变量,这可能会导致混淆:

int* foo, bar;  // foo will be int*, bar will be int
Run Code Online (Sandbox Code Playgroud)

解决这个问题的方法是,永远不要在同一行上声明几个变量.无论如何,Code Complete提倡的东西.


Ark*_*kku 5

两者都有效。我认为 #1 一般来说更清晰但在 C 中具有误导性,并且可能导致错误,例如:

type* var1, var2;

// This actually means:

type *var1;
type var2;
Run Code Online (Sandbox Code Playgroud)

所以我想说 #2 在 C 中更惯用,因此推荐,特别是如果您不是唯一处理该代码的程序员(当然,除非你们都同意某种风格)。