现要做一个图书管理系统,每本书都有自己的名字,有借出的时长,和借给谁,此时我们发现,无论是用普通的变量或者数组都很难做到方便的储存这些数据,但结构体就能很好的解决
结构体定义方式如下
struct 结构体类型名{
数据类型1 成员1;
数据类型2 成员2;
数据类型3 成员3;
}
struct book{
char per_name[8];//借阅人
int days;//借出时间
char book_name[32];//书名
}; //在使用时候要先用此结构体作为标识符struct book book1;//这样就定义好了一个名称为book1的结构体变量
struct book book2;
book1.days=30;//对结构体的成员进行访问时,需要用 . 连接
book2 = book1;//当结构体类型相同时,可以这样进行赋值,程序将会把值放入对应的成员中
在定义结构体变量时,还可以
struct book{
char per_name[8];//借阅人
int days;//借出时间
char book_name[32];//书名
}book1,book2;
这样也能正确定义book1,book2;两个结构体变量定义时还能进行赋值
struct book{
char per_name[8];//借阅人
int days;//借出时间
char book_name[32];//书名
}book1={"电控小白qaq",30,c primer plus};
联合体
联合体是C语言中提供的另外一种构造数据类型,又称为共用体。在一些特殊的应用中,有时希望在不同时刻把几种不同类型的数据存放在同一段存储单元中。例如有变量x,能根据问题的需求或存放整型数据,或存放浮点型数据,或存放字符型数据,联合体就可以满足这种要求。
联合体的定义方式与结构体较为相似,
union 联合体类型名{
类型说明符 成员名1;
类型说明符 成员名2;
...
类型说明符 成员名n;};
如
uion book{
char c;
int i;
double d;
};
在引用方面也和结构体相似,但共用体里的所有成员都公用同一内存段,所以共用体并不能像结构体那样能储存多个值,即如果已经储存了char类型的数据,如果再赋值给int 类型,那么char类型的数据会被int 类型的数据替代
uion book{
char c;
int i;
double d;
};
uion book book1;//定义一个名为book1的共用体变量
book1.c = "c";//共用体储存字符c
book1.d = 1;//共用体把数据c清楚,换成1放入double类型中