结构体类型创建
结构体是一些(具有相同或者不同元素类型)值的集合,这些值成为成员变量。
结构体的每个成员可以是不同类型的变量。
结构体的声明:
例如描述一个学生:
struct Stu
{
char name[20];//名字
int age;//年龄
char sx[5];//性别
char id[20];//学号
};//分号不能丢
结构体的成员可以是标量、数组、指针、甚至可以是其他结构体
特殊的声明:
在声明结构的时候,也可以不完全的声明。
比如:
//匿名结构体类型
struct
{
int a;
char b;
float c;
}x;
struct
{
int a;
char b;
float c;
}a[20], *p;
上面的两个结构在声明的时候省略了结构体标签(tag)。
那么问题来了?
//在上面的基础上,下面的代码合法吗?
p=&x;
警告:编译器会把上面的两个声明当成完全不同的两个类型。所以是非法的。
对于结构体的访问有两种方法:点操作符和指向操作符
点操作符:
struct S s;
strcpy (s.name,"zhangsan");//使用.访问name成员
s.age=20;//使用.访问a