第九章 结构体和共用体
9.1结构体类型和结构体变量
9.1.1结构体类型定义
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。struct 结构体类型名称
{
数据类型 成员名1;
数据类型 成员名2;
.
.
.
数据类型 成员名n;
}
struct stu_info { char name[10]; int num; }
9.1.2结构体变量的定义
1、先定义结构体类型,再定义结构体变量
struct stu_info stu1,stu2
2、在定义结构体同时定义结构体变量
struct stu_info { char mane[10]; int num; }stu1,stu2;
3、直接定义结构体变量
struct { char name[10]; int num; }stu1,stu2;
9.1.3结构体变量初始化
1、在定义结构体类型和结构体变量的同时,对结构体变量初始化
struct stu_info { char mane[10]; int num; }stu={"Way",1870212};
2、定义好结构体后,对结构体进行初始化
struct stu_info { char mane[10]; int num; }; struct stu_info stu={"Way",1870212};
9.1.4结构体变量的引用
结构体变量名.成员名;
stu.name;
9.2结构体数组
9.2.1结构体数组定义
1、先定义结构体类型,再定义结构体数组
struct stu_info { char mane[10]; int num; }; struct stu_info stus[20];
2、在定义结构体类型同时定义结构体数组
struct stu_info { char mane[10]; int num; }stus[20];
3、直接定义结构体数组
struct { char mane[10]; int num; }stus[20];
9.2.2结构体数组的初始化
1、先定义结构体数组,然后初始化
struct stu_info { char mane[10]; int num; }; struct stu_info stus[3]={{"one",1870212}, {"two",1870213}, {"three",1870214} };
2、在定义结构体数组的同时,对结构体进行初始化
struct stu_info { char mane[10]; int num; } stus[3]={{"one",1870212}, {"two",1870213}, {"three",1870214} };
9.2.3结构体数组的引用
数组元素名称.成员名
stus[i].name
9.3结构体指针变量
9.3.1结构体指针变量
struct stu_info stu={"Way",1870212}; struct stu_info *p=&stu;
当程序中定义一个指向结构体变量的指针后,可通过“指针名->成员变量名”的方式来访问结构体变量中的成员。
struct stu_info stu={"Way",1870212}; struct stu_info *p=&stu; printf("%s\n",p->name,p->num);
9.3.2结构体数组指针
与结构体指针使用基本相似:
struct stu_info stus[3]={{"one",1870212}, {"two",1870213}, {"three",1870214} }; struct stu_info *p=&stus;
9.4结构体类型数据在函数间传递
9.4.1结构体变量作为函数参数
#include<stdio.h> #include<stdlib.h> struct stu_info { char name[10]; int num; } void print_info(struct stu_info stu) { printf("%s%d\n",stu.name,stu.num); } void main() { struct stu_info s={"Way",1870212}; print_info(s); }
9.4.2结构体数组作为函数参数
#include<stdio.h> #include<stdlib.h> struct stu_info { char name[10]; int num; } void print_info(struct stu_info stu[]) { for(int i;i<2;i++) { printf("%s%d\n",stu[i].name,stu[i].num); } } void main() { struct stu_info s[2]={{"One",1870212}, {"Two",1870213} } ; print_info(s); }
9.4.3结构体指针作为函数参数
#include<stdio.h> #include<stdlib.h> struct stu_info { char name[10]; int num; } void print_info(struct stu_info* stu) { printf("%s%d\n",stu->name,stu->num); } void main() { struct stu_info s={"Way",1870212}; print_info(&s); }
9.5 union共用体
共用体是一种特殊的数据类型,它允许多个成员使用一块内存。灵活地使用共用体可以减少程序的所使用的内存
9.5.1共用体类型的定义
union 结构体类型名称
{
数据类型 成员名1;
数据类型 成员名2;
.
.
.
数据类型 成员名n;
}
union date { int m; float n; char c; };
9.5.2共用体变量的定义
1)先定义共用体类型,再定义共用体变量
union date { int m; float n; char c; }; union date a,b;
2)在定义共用体的同时定义共用体变量
union date { int m; float n; char c; }a,b;
3)直接定义共用体变量
union { int m; float n; char c; }a,b;
9.5.3共用体变量的引用和初始化
在共用体变量定义同时只能对第一个变量初始化
union 共用体类型名 共用体变量={第一个成员的类型值}; union date a={8};
完成初始化后,即可对共用体进行引用
a.m;//引用共用体a中的成员m p->m//应用共用体指针变量p所指向的成员变量m
