一.结构体的声明和成员类型
所谓结构,就是一些值的集合,这些值被称为成员变量。结构的每个成员都可以是不同类型的变量,可以是标量、数组、指针,甚至是其他结构体。结构体的声明框架如下:
struct tag//结构体标签名称
{
member-list; //结构中的成员列表
}variable-list;//变量列表
举个简单的例子,假设我们要描述一个运动员的姓名,编号,年龄,性别还有成绩时,可以这样来声明一个结构体。
struct Stu
{
char name[20];//姓名
char id[20];//编号
int age;//年龄
char sex[5];//性别
int result;//成绩
};//切记此处分号不能丢
当然在一些特殊结构体声明的时候,也可以进行不完全的声明,例如:
struct
{
int a;
char b;
float c;
}x;
struct {
int a;
char b;
float c;
}a[20], *p;
这两个结构体在声明的时候都忽略了结构体标签(tag),那么 p = &x 合法吗?答案是不合法。由于在结构体声明时,缺少了标签,只有 struct ,那么编译器就会把上面的两个声明当成完全不同的类型。而这种不完全声明的结构体被称为匿名结构体类型。