C中的结构声明

时间:2011-08-05 07:57:18

标签: c struct typedef

是否遵循结构声明是正确的。

typedef struct  { 
int roll; 
int  age ; 
} class[10];

当我这样做时,编译器不会说任何错误。 但是,当我指定class[0].age=10,时 我收到了错误。所以这里有class [0] struct variable或structure name ..

谢谢

4 个答案:

答案 0 :(得分:6)

您正在定义类型 class,它是一个包含十个结构的数组。要使用此类型,您必须实例化该类型的变量:

class x;
x[0].age = 10;

也许稍微更简洁的方法是拥有两个单独的typedef:

typedef struct { int roll; int  age; } foo_unit;
typedef foo_unit foo_array[10];

foo_array x;     /* now an array of 10 foo_units. */
foo_unit  y[10]; /* same thing */

答案 1 :(得分:3)

我认为你想要做的是

struct { 
  int roll; 
  int  age ; 
} class[10];

在当前代码中,由于typedef,类被定义为类型。以这种方式定义类型很好,但是你必须在之后声明一个变量:

typedef struct { 
  int roll; 
  int  age ; 
} class_type[10];

class_type class;

答案 2 :(得分:0)

通过制作此typedef,您可以定义类型。因此,为了获得理想的效果,您应该执行以下操作:

   class myclass;
   myclass[0].age = 1;

答案 3 :(得分:0)

class是10个元素的数组的类型名称,每个元素等于您定义的结构。

您应该实例化类型:

class classObject;

您可能会误用声明结构的基本语法:

struct class { 
   int roll; 
   int  age ; 
} class[10];

此声明还将定义一个变量,数组为10 struct class

通过在typedef前面添加前缀,您正在改变声明的工作方式,而是定义类型名称而不是结构的实例。