下面的结构声明是否正确。C中的结构声明
typedef struct {
int roll;
int age ;
} class[10];
当我这样做时,编译器不会说任何错误。 但是,当我分配class[0].age=10,
我得到错误。所以在这里类[0]结构变量或结构名..
感谢
下面的结构声明是否正确。C中的结构声明
typedef struct {
int roll;
int age ;
} class[10];
当我这样做时,编译器不会说任何错误。 但是,当我分配class[0].age=10,
我得到错误。所以在这里类[0]结构变量或结构名..
感谢
要定义型class
这是十层结构数组。使用这种类型的,你必须instatiate该类型的变量:
class x;
x[0].age = 10;
也许稍微清洁的方式将有两个单独的类型定义:
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 */
我想你想要做的是
struct {
int roll;
int age ;
} class[10];
在当前的代码,类定义为一个类型,因为的typedef。它的优良定义类型的这种方式,但你必须在事后声明一个变量:
typedef struct {
int roll;
int age ;
} class_type[10];
class_type class;
通过进行此类型定义,你定义一个类型。因此,为了得到你想要的效果,你应该做到以下几点:
class myclass;
myclass[0].age = 1;
class
是10个元素等同于你定义结构数组的类型名称。
你应该实例化类型:
class classObject;
你在可能由基本语法声明一个结构误导:
struct class {
int roll;
int age ;
} class[10];
此声明还将定义一个变量,数组的10 struct class
。
通过在typedef
前加上前缀,您正在改变声明的工作方式,并且定义类型名称而不是结构实例。