详解C语言中的结构体

什么是结构体

当你需要存储很多个成员,但每个成员的宽度有不一样,这时候我们就要去定义一个这样的类型。

假设现在需要存储一个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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章