C语言 学习课件 第9讲

时间:2025-07-05

Chap 9 结构9.1 9.2 9.3 9.4 构建手机通讯录 结构变量 结构数组 结构指针

本章要点

什么是结构?结构与数组有什么差别? 有几种结构的定义形式,它们之间有什么不同? 什么是结构的嵌套? 什么是结构变量和结构成员变量,如何引用结构 成员变量? 结构变量如何作为函数参数使用? 什么是结构数组,如何定义和使用结构数组? 什么是结构指针,它如何实现对结构分量的操作? 结构指针是如何作为函数的参数的?

9.1 构建手机通讯录9.1.1 程序解析 9.1.2 结构的概念与定义

9.1.3 结构的嵌套定义

9.1.1 程序解析例9-1 构建简单的手机通讯录 联系人的基本信息:姓名、年龄和联系电话 最多容纳50名联系人的信息 具有新建和查询功能

9.1.1 程序解析-程序结构main()

new_friend()

search_friend()

程序结构 主函数main:程序的总体控制 函数new_friend:新建联系人功能 函数search_friend:查询联系人功能

程序解析-数据类型/变量

数据类型/变量 结构类型struct

friends_list:在程序首部定义, 其中的成员分别代表联系人的基本信息struct friends_list{ char name[10]; int age; char telephone[13]; }; /* 姓名 */ /* 年龄 */ /* 联系电话 */

结构数组friends:每个元素就是一个结构变量,

对应一个联系人struct friends_list friends[50];

程序解析-全局变量/函数参数 全局变量Count:记录当前的联系人总数 函数new_friend和search_friend的参数之一是

结构数组:void new_friend(struct friends_list friends[ ] ); void search_friend(struct friends_list friends[ ], char *name); 结构数组名作为函数实参与普通数组名作函数参数一样, 将数组首地址传递给函数形参

程序解析-源程序#include<stdio.h> #include<string.h> /*手机通讯录结构定义*/ struct friends_list{ char name[10]; /* 姓名 */ int age; /* 年龄 */ char telephone[13]; /* 联系电话 */ }; int Count = 0; /* 全局变量记录当前联系人总数 */ void new_friend(struct friends_list friends[ ] ); void search_friend(struct friends_list friends[ ], char *name);

int main(void) { int choice; char name[10]; struct friends_list friends[50]; /* 包含50个人的通讯录 */ do{ printf("手机通讯录功能选项:1:新建 2:查询 0:退出\n"); printf("请选择功能:"); scanf("%d", &choice); switch(choice){ case 1: new_friend(friends); break; case 2: printf("请输入要查找的联系人名:"); scanf("%s", name); search_friend(friends, name); break; case 0: break; } }while(choice != 0); printf("谢谢使用通讯录功能!\n"); return 0; }

源程序

/*新建联系人*/ void new_friend(struct friends_list friends[ ]) { struct friends_list f; if(Count == 50){ printf("通讯录已满!\n"); return; } printf("请输入新联系人的

姓名:"); scanf("%s", http://www.77cn.com.cn); printf("请输入新联系人的年龄:"); scanf("%d", &f.age); printf("请输入新联系人的联系电话:"); scanf("%s", f.telephone); friends[Count] = f; Count++; }

源程序

/*查询联系人*/ void search_friend(struct friends_list friends[ ], char *name) { int i, flag = 0; if(Count == 0){ printf("通讯录是空的!\n"); return; } for(i = 0; i < Count; i++) if(strcmp(name, friends[i].name) == 0){ /* 找到联系人*/ flag=1; break; } if(flag){ printf("姓名: %s\t", friends[i].name); printf("年龄: %d\t", friends[i].age); printf("电话: %s\n", friends[i].telephone); } else printf("无此联系人!"); }

源程序

9.1.2 结构的概念与定义

使用结构来表示通讯录信息:struct friends_list{ char name[10]; /*姓名*/ int age; /*年龄*/ char telephone[13]; /*联系电话*/ };

结构:构造数据类型,把有内在联系的不同类型 的数据统一成一个整体,使它们相互关联 结构又是变量的集合,可以单独使用其成员

结构的定义

结构类型定义的一般形式为: 关键字struct和它后面 struct 结构名 { 的结构名一起组成一 类型名 结构成员名1; 个新的数据类型名 类型名 结构成员名2; 类型名 结构成员名n; }; 结构的定义以分号结束,被看作一条语句

结构定义示例定义平面坐标结构: struct point { double x; double y; };

虽然x、y的类型相同,也可以用数组的方式 表示,但采用结构体描述整体性更强,增加 了程序的可读性,使程序更清晰。

9.1.3 结构的嵌套定义

在实际生活中,一个较大的实体可能由多个成员 构成,而这些成员中有些又有可能是由一些更小 的成员构成的实体。 在手机通讯录中,增加“通信地址”姓名 性别 年龄 城市 通信地址 街道 门牌号 邮编 联系 电话 电子 邮箱

结构的嵌套定义姓名 性别 年龄 城市 通信地址 街道 门牌号 邮编 联系 电话 电子 邮箱

struct address{ char city[10]; char street[20]; int code; int zip; };

struct nest_friendslist { char name[10]; int age; struct address addr; char telephone[13]; } nest_friend;

在定义嵌套的结构类型时,必须先定义 成员的结构类型,再定义主结构类型。

…… 此处隐藏:1071字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言 学习课件 第9讲.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219