可能重复:
在C/C++中声明指针变量的正确方法
一段时间以下一直困扰着我,我应该把星星放在我的指针表示法中.
int *var; // 1
Run Code Online (Sandbox Code Playgroud)
和
int* var; // 2
Run Code Online (Sandbox Code Playgroud)
显然做同样的事情,两个符号都是正确的,但我发现我看的大多数文献和代码都使用第1种符号.
使用第二种表示法,用空格分隔类型和变量名称,而不是混合类型和变量标记,这不是更"正确"吗?
Pet*_*ker 20
没有永不. <g>
但考虑一下:
int* var1, var2;
Run Code Online (Sandbox Code Playgroud)
在此,所谓的安置*
是一种误导,因为它并没有应用到var2
,这是一个int
,而不是一个int*
.
0x9*_*x90 13
在Linux内核编码风格惯例是:
int *ptr1 , *ptr2;
Run Code Online (Sandbox Code Playgroud)
所以我认为你应该把它作为你的惯例.
声明指针数据或返回指针类型的函数时,首选使用
*
是与数据名称或函数名称相邻,而不是与类型名称相邻.例子:
char *linux_banner;
unsigned long long memparse(char *ptr, char **retptr);
char *match_strdup(substring_t *s);
Run Code Online (Sandbox Code Playgroud)
Pet*_*ter 10
我相信这种表示法的部分原因是变量的用法和声明看起来相似.
int *var;
int x;
x = *var;
Run Code Online (Sandbox Code Playgroud)
您也可以将其视为解除引用var
会给您一个int.