可能重复:
在 C/C++ 中声明指针变量的正确方法
一段时间以来,以下内容一直困扰着我,我应该将星号放在我的指针符号中的哪个位置。
int *var; // 1
和
int* var; // 2
显然做同样的事情,两种表示法都是正确的,但我发现我看到的大多数文献和代码都使用第一种表示法。
使用第二种表示法,用空格分隔类型和变量名,而不是混合类型和变量标记,会不会更“正确”?
可能重复:
在 C/C++ 中声明指针变量的正确方法
一段时间以来,以下内容一直困扰着我,我应该将星号放在我的指针符号中的哪个位置。
int *var; // 1
和
int* var; // 2
显然做同样的事情,两种表示法都是正确的,但我发现我看到的大多数文献和代码都使用第一种表示法。
使用第二种表示法,用空格分隔类型和变量名,而不是混合类型和变量标记,会不会更“正确”?
没有永不。<g>
但请考虑:
int* var1, var2;
在这里, 的位置具有*
误导性,因为它不适用于var2
,它是 anint
而不是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。