c语言-结构体-小白3小时总结
结构
为什么需要结构体
c语言后很多类型 比如 char short int double float long long
再例如比较难的 数组 指针类型
但是你会发现 这些类型都是定死的 就是说int 就是int 不能再放别的
int[] 的数组中只能放 int 的数据
char name[20]//姓名
short sex//性别
int weight//体重
double height //身高
//float long long
但是这很明显 很难满足某些需求 例如人员信息 有身高int 有姓名char[] 有体重int…
我们想要一种 能够直接把多种数据综合起来的数据结构
于是就有了 struct{} 的结构
struct {
char name[20]//姓名
short sex//性别
int weight//体重
double height //身高
}
这一大坨就是一个类型 和int 等价
结构体的构建
1.首先 需要struct关键词来声明
2.需要 {
} 包裹 里面存放这要存储的数据
3.包裹的数据和正常的数据声明一样 比如姓名 char [20] 是一个char[]的字符串
4.数据要有;结尾
struct {
char name[20];//姓名
short sex;//性别
int weight;//体重
double height; //身高
}
结构体的声明
例如 int a; 类型 名字
类型 名字
struct {
char name[20]//姓名
short sex//性别
int weight//体重
double height //身高
} people;
//people 就是一个变量
结构体数组的声明
和正常数组一样
int a[];
用struct 和int是等价的
struct {
char name[20]//姓名
short sex//性别
int weight//体重
double height //身高
} people[20];
创建一个结构体的数组 里面的类型就是 struct
访问和赋值结构体数据
通过 . 访问
struct {
char name[20]//姓名
short sex//性别
int weight//体重
double height //身高
} people;
//获取
people.name//获得people的name存放的值
people.sex//获得people的sex存放的值
people.weight//获得people的weight存放的值
people.height//获得people的height存放的值
//赋值
people.name="娃哈哈"//把值存放到people.name
strcpy(people.name, "Timmy");//结构体对于字符串的赋值 上面.会报错 建议以使用这个
people.sex=1//把值存放到people.sex
people.weight=23//把值存放到people.weight
people.height=56//把值存放到people.height
之后会有->的访问 简单提一下那是指针的替代 等价 (*people).name people->name
访问和赋值结构体数组数据
通过 [] 和 . 访问
struct {
char name[20]//姓名
short sex//性别
int weight//体重
double height //身高
} people[20];
//获取
people[0].name//获得people数组的第一个结构体.的name存放的值
people[0].sex//获得people数组的第一个结构体.的sex存放的值
people[0].weight//获得people数组的第一个结构体.的weight存放的值
people[0].height//获得people数组的第一个结构体.的height存放的值
//赋值
people[0].name="娃哈哈"//把值存放到people数组的第一个结构体.name
strcpy(people.name, "Timmy");//结构体对于字符串的赋值 上面.会报错 建议以使用这个
people[0].sex