什么是结构体
当你需要存储很多个成员,但每个成员的宽度有不一样,这时候我们就要去定义一个这样的类型。
假设现在需要存储一个2K球员的属性:
球员名 运动 突破 背身 中投 三分 组织 外防 内防 篮板
char int flot int int int int int int int
这时我们要想都包含进去,就需要定义一个结构体
char = 容器
int = 容器
数组 = 容器
结构体 =容器
结构体类型的定义
结构体定义格式:
struct 类型名
{
//可以定义多种类型
int a;
char b;
short c;
}
例如:
#include <stdio.h> //头文件
#include <windows.h>
struct player1 //定义一个新的类型
{
int x; //定义变量
int y;
};
struct player1 Luka; //定义变量Luka
void main() //程序入口
{
getchar(); //获取输入
return; //程序结束
}
同时我们在结构体中依然可以调用之前定义的结构体,例如:
struct player1
{
int x;
int y;
};
struct player2
{
int x;
int y;
struct player1;
};
struct player2 Luka;
结构体的定义非常灵活,除了它自身以外,可以使用任何类型。
结构体类型的变量
上面的例子定义的都是结构体类型,接下来我们定义一下结构体变量:
#include <stdio.h> //头文件
#include <windows.h>
struct player1 //定义一个新的类型
{
int x; //定义变量
int y;
};
player1 Luka = {10,20}; //定义结构体类型的全局变量变量Luka
void main() //程序入口
{
getchar(); //获取输入
return; //程序结束
}
我们可以在VC6里调出监视器来看一下,这样可以非常直观的看看他存储的值是多少:
结构体类型变量的读写
#include <stdio.h> //头文件
#include <windows.h>
struct player1 //定义一个新的类型
{
int x; //定义变量
int y;
};
player1 Luka = {10,20}; //定义结构体类型的全局变量变量Luka
int x;
int y;
void main() //程序入口
{
//读
x = Luka.x;
y = Luka.y;
printf("%d\n",x);
//写
Luka.x = 5;
Luka.y = 15;
printf("%d\n",x);
getchar(); //获取输入
return; //程序结束
}
这里需要注意,不可以把结构体变量的整型赋给一个整型,例如:
int x = player;
//或者
player = y;
也不可以两个结构体类型相等:
player1 = player2;
这里另一种定义方法,我们可以在定义结构体的同时也定义变量:
#include <stdio.h> //头文件
#include <windows.h>
struct player1 //定义一个新的类型
{
int x; //定义变量
int y;
}Luka,Park,Book;