总结:
数据类型:
基本数据类型
整型
浮点型
字符型
构造类型
数组类型
指针类型
void类型
1,
为了更好的描述 tom --学校的一个学生
能不能 有一种数据类型 专门来描述学生这种数据
结构体 struct
描述一些 原先 基本数据类型不好描述的 这种复杂数据类型
eg:
struct 学生
{
//1.姓名 //chat name[20]
//2.班级 //int classNo
//3.性别 //char sex; //f m
//4.成绩 //float score;
//5.年龄 //int age;
}
eg:
struct 汽车
{
//1.姓名 //chat name[20]
//2.班级 //int classNo
//3.性别 //char sex; //f m
//4.成绩 //float score;
//5.年龄 //int age;
}
语法:
struct 结构体类型名
{
数据成员列表;
};
定义了一个 "数据类型" --- 用户自定义的数据类型
eg:
描述学生这种类型:
struct student
{
//name
char name[20]; //成员变量 各个成员变量之间 用分号隔开
//age
unsigned char age;//0~255 -128~127
//score
float score;
//...
}; //注意: 最后这个分号(;) 表示 --- 结构体类型定义
注意:
1.结构体 --- 用来实现 自定义数据类型
2.用结构体
a.先构造出 数据类型
b.用数据类型 定义变量
数组
指针
访问结构体:
. //结构体成员运算符
结构体变量名.成员变量名
2,
构体变量初始化
结构体变量赋值 --结构体不能整体 赋值 {"tom",20,89.5,100};
struct student s;
s = {"tom",20,89.5,100}; //
int a = 10; //初始化
int a; //赋值
a = 10;
-> //用于结构体类型的指针变量的
//结构体访问成员的方式2
//
struct student *s = &s1;
s->name
结构体类型的变量.成员变量名
结构体类型的指针->成员变量名
3,
结构体的对齐规则:
1.在32位的平台上,默认都是按4字节对齐的。 64位的平台 默认是8字节
2.对于成员变量,
各自在自己的自然边界上对齐。
//整个结构体的对齐
3.如果 成员变量中有比4字节大。
此时 整个结构体按照4字节对齐。 //32位的平台
4.如果 成员变量中没有有比4字节大。
此时 整个结构体按照最大的那个成员对齐。