是否遵循结构声明是正确的。
typedef struct {
int roll;
int age ;
} class[10];
当我这样做时,编译器不会说任何错误。
但是,当我指定class[0].age=10,
时
我收到了错误。所以这里有class [0] struct variable或structure name ..
谢谢
答案 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
前面添加前缀,您正在改变声明的工作方式,而是定义类型名称而不是结构的实例。