【问题标题】:Variable declaration space sensitivity in C [duplicate]C中的变量声明空间敏感性
【发布时间】:2017-11-25 20:18:45
【问题描述】:

考虑以下 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 的原始性融为一体。

【问题讨论】:

标签: c pointers ansi-c


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    *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 是指针变量。

    【讨论】:

    • 酷,谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多