将星号放在C和C ++指针表示法的位置

可能重复:
在C / C ++中声明指针变量的正确方法

有一段时间以下一直让我烦恼,我应该把星星放在我的指针表示法中。

int *var; // 1 

 int* var; // 2 

显然做同样的事情,两个符号都是正确的,但我发现我看的大多数文献和代码都使用第1种符号。

使用第二种表示法,用空格分隔类型和变量名称,而不是混合类型和变量标记,这不是更“正确”吗?

没有永不。

但请考虑:

 int* var1, var2; 

这里, *的放置是误导性的,因为它不适用于var2 ,它是一个int而不是一个int*

Linux内核编码风格约定是:

 int *ptr1 , *ptr2; 

所以我认为你采用它作为你的惯例。

声明指针数据或返回指针类型的函数时, *的首选用法与数据名称或函数名称相邻,而不是与类型名称相邻。 例子:

 char *linux_banner; unsigned long long memparse(char *ptr, char **retptr); char *match_strdup(substring_t *s); 

我相信这种表示法的部分原因是变量的用法和声明看起来相似。

 int *var; int x; x = *var; 

您也可以将其视为解除引用var将为您提供一个int。