浅谈结构体
0x00 前言/概述
什么是结构体?为了便于引用数据,有时需要用不同的数据组合成一个有机的整体,而这样的整体中则是互相影响,相互联系。比如一个人的基本资料:编号,姓名,性别,地址(如下)。c语言中把这样自己指定的组合项称为结构体(structure)。
num | name | sex | addr |
1 | Ruilin | M | Shanxi |
0x01 如何定义
如上图就是我们想要的结构体,接下来我们用代码来建立
1 2 3 4 5 6 7 |
struct person { int num; char name[20]; char sex; char addr[30]; } ; |
OK,大家应该一眼就能看懂他的语法结构了
1 2 3 4 |
struct 结构体名 { 成员列表 }; |
其中成员列表由两部分组成: 类型名 成员名
上面所讲只是指定了一个结构体类型,而其中并无具体数据,所以我们应当定义结构体类型的变量并在其中存放具体数据。以下为3种方法。
1.先声明结构体类型再定义变量名
1 |
struct person person1,person2; |
2.在声明类型的同时定义变量
1 2 3 4 5 6 7 |
struct person { int num; char name[20]; char sex; char addr[30]; } person1,person2; |
一般形式:
1 2 3 4 |
struct 结构体名 { 成员表列 }变量表列; |
3.直接定义结构类型变量
1 2 3 4 |
struct { 成员表列 }变量名表列; |
接下来如何使用呢?他的引用方式为
结构体变量名.成员名
如:
person.num=1
结构体变量的初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#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; } |
输出:
结构体数组
一个结构体变量中可以存放一组数据,就像我们开头的那个表格,那么为了增加多个行(多个人的资料)这时可以用数组来构成。结构体数组每个数组元素都是一个结构体类型的数据,他们分别包括各个成员(分量)项。
1 2 3 4 5 6 7 8 |
struct person { int num; char name[20]; char sex; char addr[30]; }; struct person per[3]; |
或
1 2 3 4 5 6 7 |
struct person { int num; char name[20]; char sex; char addr[30]; }per[3]; |
初始化
1 |
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 指针与链表
近期评论