C中的变量声明空间灵敏度

时间:2017-11-25 20:18:45

标签: c pointers ansi-c

考虑以下ANSI C代码:

int* var1, var2; //line 1
int *var3, var4; //line 2
int * var5, var6; //line 3
int var7, *var8; //line 4

第1,2和3行在功能上是否相同?与'*'相关的间距在语法上是否重要? 'var2','var4'和'var6'也是指针吗?第4行合法吗?

我来自Java背景,因此我对其冗长和面向对象感到非常满意。因此,现在很难用C的原始性来凝胶。

2 个答案:

答案 0 :(得分:0)

是的,第1行到第3行是等效的。

不,var2var4var6 不是指针。这就是为什么在C中第二行通常是首选的,因为它显示星号与变量(在你的情况下为var3)的关联稍微好一些。

最后,是第4行有效并将var7声明为普通int变量,var8作为指向int的指针。

答案 1 :(得分:0)

*variable name之间的间距与C无关。在变量*的前面,变量将是指针类型。

int* var1, var2; 

这里var1类型将是指针类型& var2是普通的int变量。

int *var3, var4; 

这里var3类型将是指针类型& var4是普通的int变量。

int * var5, var6; 

这里var5类型将是指针类型& var6是普通的int变量。

int var7, *var8; 

这里var7类型将是普通的int类型& var8是指针变量。