结构体+枚举+联合
文章目录
结构体
结构体的声明
(1) 结构的基础知识
机构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。
(2)结构的声明
struct tag
{
member-list;
}variable-list;
特别要注意的是最后的分号不能丢。
(3)特殊的声明
在声明结构的时候,可以不完全的声明。(匿名结构体类型)
struct
{
int a;
char b;
float c;
}x;
struct
{
int a;
char b;
float c;
}a[20],*p;
上面的两个结构在声明的时候省略掉了结构体标签(tag)。
那么下面这个语句合法吗?
p=&x;
**警告:**编译器会把上面两个声明当成完全不同的两个类型。所以是非法的。
结构的自引用
在结构体中包含一个类型为该结构本身的成员
struct Node
{
int data;
struct Node* next;
};
注意,如果在typedef struct的时候内部包含一个类型为该结构本身的成员,定义时不能简略
例如
typedef struct Node
{
int data;
struct Node* next;
}Node;
结构体变量的定义和初始化
struct Point
{
int x;
int y;
}p1; //声明类型的同时定义变量p1
struct Point p2;//定义结构体变量p2
//初始化:定义变量的同时赋初值。
struct Point p3 = {
x,y};
struct Stu //类型声明
{
char name[15];//名字
int age; //年龄
};
struct Stu s = {
"zhangsan",20};//初始化
struct Node
{
int data;
struct Point p;
struct Node* next;
}n1 = {
10,{
4,5},NULL}