0x00 前言/概述

什么是结构体?为了便于引用数据,有时需要用不同的数据组合成一个有机的整体,而这样的整体中则是互相影响,相互联系。比如一个人的基本资料:编号,姓名,性别,地址(如下)。c语言中把这样自己指定的组合项称为结构体(structure)。

num name sex addr
1 Ruilin M Shanxi

 

0x01 如何定义

如上图就是我们想要的结构体,接下来我们用代码来建立

struct person
{
	int num;
	char name[20];
	char sex;
	char addr[30];
} ;

OK,大家应该一眼就能看懂他的语法结构了

struct 结构体名
{
  成员列表
};

其中成员列表由两部分组成: 类型名 成员名

 

上面所讲只是指定了一个结构体类型,而其中并无具体数据,所以我们应当定义结构体类型的变量并在其中存放具体数据。以下为3种方法。

1.先声明结构体类型再定义变量名

struct person person1,person2;

2.在声明类型的同时定义变量

struct person
{
	int num;
	char name[20];
	char sex;
	char addr[30];
} person1,person2;

一般形式:

struct 结构体名
{
  成员表列
}变量表列;

 

3.直接定义结构类型变量

struct
{
  成员表列
}变量名表列;

 

 

接下来如何使用呢?他的引用方式

结构体变量名.成员名

如:

person.num=1

 

结构体变量的初始化

#include<stdio.h>
main()
{
struct person
{
	int num;
	char name[20];
	char sex;
	char addr[30];
} a={1,"Ruilin",'M',"Shanxi"}; 
printf("NO.:%d\nname:%s\nsex:%C\naddr:%s\n",a.num,a.name,a.sex,a.addr);
return 0;
}

输出:

2345截图20151231171440

结构体数组

一个结构体变量中可以存放一组数据,就像我们开头的那个表格,那么为了增加多个行(多个人的资料)这时可以用数组来构成。结构体数组每个数组元素都是一个结构体类型的数据,他们分别包括各个成员(分量)项。

struct person
{
	int num;
	char name[20];
	char sex;
	char addr[30];
};
struct person per[3];

struct person
{
	int num;
	char name[20];
	char sex;
	char addr[30];
}per[3];

初始化

per[3]={{...},{...},{...}};

 

即一般形式是在定义数组后加:=初值表列

 

最后如下:

num name sex addr
per[0] 1 Ruilin M Shanxi
per[1] 2 Lihua M Beijing
per[2] 3 Zhaohong F Shanghai

未完.待续

0x02 指针与结构体

0x03 指针与链表