1 概述
- 结构体是一个自定义类型,使用关键字struct来标识;
- 结构体用于描述复杂的对象,如人有姓名、性别、年龄、电话和住址等信息;
- 结构体是由多个成员构成的,即多个类型的组合,成员类型可以是基本数据类型、数组、指针和其他结构体;
2 结构体
2.1 语法
struct 结构体名 {
类型名1 成员名1;
类型名2 成员名2;
......
类型名n 成员名n;
};
2.2 结构体类型声明
声明一个名为Stu、包含4个成员(name、age、sex和tel)的结构体类型,如下图所示:
//定义结构体类型及其成员
struct Stu {
char name[20];
int age;
char sex[10];
char tel[20];
};
2.3 结构体对象创建
基于上述Stu结构体,创建一个名为s的结构体对象并对其初始化,如下图所示:
//创建结构体对象并初始化
struct Stu s = { "ryan", 18, "male", "155-9666-8862" };
2.4 结构体成员访问
2.4.1 访问方式1
使用结构体对象名+成员访问运算符(.)+成员名,如下图所示:
puts("结构体对象.成员名");
printf("name=%s, age=%d, sex=%s, te l=%s\n", s.name, s.age, s.sex, s.tel);
puts("");
2.4.2 访问方式2
使用结构体指针解引用+成员访问运算符(.)+成员名,如下图所示:
//创建结构体指针并初始化
struct Stu *ps = &s;
//
puts("(*结构体指针).成员名");
printf("name=%s, age=%d, sex=%s, te l=%s\n", (*ps).name, (*ps).age, (*ps).sex, (*ps).tel);
puts("");
注意结构体指针必须加上圆括号。
2.4.3 访问方式3
使用结构体指针+间接成员运算符(->)+成员名,如下图所示:
//创建结构体指针并初始化
struct Stu *ps = &s;
//
puts("结构体指针->成员名");
printf("name=%s, age=%d, sex=%s, te l=%s\n", ps->name, ps->age, ps->sex, ps->tel);
puts("");
2.4.4 访问结果
程序运行结果如下图所示: