代码之家  ›  专栏  ›  技术社区  ›  ruralcoder

C多个单行声明

  •  28
  • ruralcoder  · 技术社区  · 15 年前

    当我在一行上声明多个变量时会发生什么?例如

    int x, y, z;
    

    都是整数。问题是在下面的语句中y和z是什么?

    int* x, y, z;
    

    它们都是int指针吗?

    4 回复  |  直到 15 年前
        1
  •  63
  •   John Bode    15 年前

    仅限 x 是指向int的指针; y z 是普通的整数。

    这是C声明语法的一个方面,让一些人感到困惑。C使用a的概念 ,它介绍了要声明的对象的名称 以及类型说明符未提供的其他类型信息 . 在宣言中

    int* x, y, z;
    

    声明人是 *x y ,和 int* x int *x y z 由类型说明符指定 int ,而 由声明符指定 *十 (瞧,表情 *十 内景 ).

    如果希望所有三个对象都成为指针,则有两个选择。可以将它们显式声明为指针:

    int *x, *y, *z;
    

    或者可以为int指针创建typedef:

    typedef int *iptr;
    iptr x, y, z;
    

    请记住,在声明指针时 * 是变量名的一部分,而不是类型。

        2
  •  9
  •   Pablo Santa Cruz    15 年前

    在你的第一句话中:

    int x, y, z;
    

    int s。

    然而,在第二个例子中:

    int* x, y, z;
    

    仅限 x 是指向 内景 . y z 内景

    如果你想让他们都成为 内景 您需要做什么:

    int *x, *y, *z;
    
        3
  •  8
  •   Macmade    15 年前

    只有x是int指针。Y和Z就是int。 如果你想要三分球:

    int * x, * y, * z;
    
        4
  •  4
  •   hyde    13 年前

    重要的是要知道,在C中,声明模仿用法。*一元运算符在C中是右结合的。例如,在 int *x int x

    int* x, y, z; C编译器将x声明为int星,将y和z声明为整数。

    推荐文章