主要内容
1、为什么使用结构体?
需要一种类型,该类型可以保存多个同类型的数据
2、结构体是什么?
是一种类型
3、如何定义结构体类型?
e.g
struct student{
int age;
char sex;
char name[10];
}
注意:定义结构体类型时,内部类型不能赋初值,原因:类型无内存,不能赋值;同样,类的成员变量同样不能赋初值,但对象可以赋初值
4、如何使用结构体变量?
struct student xiaow;
struct student laow = {40,'m',"老王"};//初始化
使用结构体变量
laow.age = 35;
5、结构体类型内存字节数的计算方式
对齐方式:小类型 对齐 大类型
struct person{
int age;
char * name;
}
sizeof(struct person)
该结构体类型内存大小为16个字节
struct person{
int age;
char name[5];
}
sizeof(struct person)
该结构体类型内存大小为4*3=12个字节
struct person{
int age;
char * name;
char sex;
}
sizeof(struct person)
该结构体类型内存大小为8*3=24个字节
struct person{
int age;
char sex;
char * name;
}
sizeof(struct person)
该结构体类型内存大小为8*2=16个字节
结构体具体使用
定义结构体类型
struct person{
int age;
int height;
};
定义结构体类型变量
struct person xw;
-
struct person *p = &xw;
结构体指针
访问
xw.age = 20;
xw.height = 180;
- 指针使用
->
访问元素
p->age = 30;
p->height = 180;
将结构体保存到文件
FILE *fp = fopen("C:\\Users\\Administrator\\Desktop\\test.txt","a+");
fwrite(&xw, sizeof(struct person), 1, fp);//写入二进制流
读取内容
struct person zs;
fread(&zs, sizeof(struct person), 1, fp);
printf("age:%d height:%f\n",zs.age,zs.height);