C语言11 结构体
思考:
当需要一个容器能够存储1个字节,你会怎么做? //char
当需要一个容器能够存储4个字节,你会怎么做? //int
当需要一个容器能够存储100个2个字节的数据,你会怎么做? //short arr[100]
当需要一个容器能够存储5个数据,这5个数据中有1字节的,2字节的有10字节的。。。你会怎么做??
=====
结构体
我需要这样的一个容器:
生命 int
魔法 int
技能 int
经验 int
血值 int
等级 int
移动速度 float
名称 char[0x20]
char = 容器
int = 容器
数组 = 容器
结构体 = 容器
结构体的定义:
struct 类型名{
//可以定义多种类型
int a;
char b;
short c;
};
- char/int/数组 等是编译器已经认识的类型:内置类型
- 结构体是编译器不认识的,用的时候需要告诉编译器一声:自定义类型
- 上面的代码仅仅是告诉编译器 我们自己定义的类型是什么样的,本身并不占用内存
- 接口体声明位置拥有如同声明变量一样的属性 局部和全局
- 结构体在定义的时候 除了自身以外,可以使用任何类型
结构体类型变量的定义:
struct stPoint
{
int x;
int y;
}
//结构体类型 变量名;
struct stPoint stPoint;
struct stPoint point = {10,20};
struct stStudent
{
int stucode;
char stuName[20];
int stuAge;
char stuSex;
}
struct stStudent student = {101,"张三",18,'M'};
结构体变量的读写:
struct stPoint
{
int x;
int y;
}
stPoint point = {10,20};
int x;
int y;
//读
x =point.x;
y = point.y;
//写
point.x = 100;
point.y = 200;
动手思考
struct stPoint
{
int x;
int y;
}
stPoint point = {10,20};
stPoint point2 = {11,20};
point = point2;
//可以吗?
定义结构体类型的时候,直接定义变量
struct stPoint
{
int x;
int y;
}point1,point2,point3;
//这种方式是分配内存的,因为不仅仅是定义新的类型。还定义了三个全局变量
point1.x = 1;
point1.y = 2;
point2.x = 3;
point2.y = 4;
point3.x = 5;
point3.y = 6;