考虑以下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的原始性来凝胶。
答案 0 :(得分:0)
是的,第1行到第3行是等效的。
不,var2
,var4
和var6
不是指针。这就是为什么在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是指针变量。