2018-2019-1 20189221 《从问题到程序》第 8 周学习总结

2018-2019-1 20189221 《从问题到程序》第 8 周学习总结

第九章 结构和其他数据机制

结构(struct)、联合(union)、枚举(enum)等数据机制的概念、意义和用途,使用方法。

9.1结构(struct)

C语言的结构(structure)用于把多个类型可能不同的数据对象集合起来。C结构是由若干结构的成分或成员(可不同类型的数据项对象)组合而成的复合数据。一个(或一类)结构中的每个成员都给定了一个名字,通过成员名实现对结构成员的访问。

9.1.1结构声明与变量定义

结构描述用关键字struct引导,结构说明的 基本形式是:

    struct { 成员说明序列 }; 

定义结构变量:

struct {
     int n;
     double x, y;
} st1, st2; 

定义结构类型

typedef struct {
    double x, y;
} POINT; 

typedef struct {
    POINT center;
    double radius;
} CIRCLE; 

typedef struct {
    POINT lu;
    POINT rd;
} RECTANGLE; 

9.1.2结构变量的初始化和使用

结构变量也可以在定义时直接初始化。为结构提供初始值的形式与数组一样。

对结构变量的操作主要是整体赋值和结构成员访问。

访问结构成员的操作用圆点运算符(.)描述

pt2.y = pt1.y + 2.4;
circ1.center.x = 2.07;
circ1.center.y = pt1.y; 

9.1.3结构、数组与指针

结构里可以包含数组成员,也可以定义以结构作为元素的数组。

两种实现方式:

用一个两维字符数组和一个计数器数组,用一个字符指针数组和一个计数器数组

可能更合理的方式——采用一种结构来表示与一个关键字有关的所有信息。

typedef struct {
    char * key;
    int count;
} KEYC; 

9.1.4 字段

字段:使人在需要时能把几个结构成员压缩到一个基本数据类型成员里存放,这可以看作是一种数据压缩表示方式。

struct pack {
    unsigned a:2;
    unsigned b:8;
    unsigned c:6;
} pk1, pk2; 

采用字段压缩方式,通常会使访问结构成员的操作效率下降很多。

9.2结构与函数

函数处理存储在结构中的数据:

    1. 个别地将结构成员的值传递给函数处理。
    1. 将整个结构作为参数值传递给函数,一般将这种参数称作结构参数。
    1. 将结构的地址传给函数,也就是说传递指向结构的指针值。这称为结构指针参数。

9.2.1处理结构的函数

采用动态建立与管理:

  • 建立的结构的存在期不受建立操作所在位置的约束
  • 通过指针传递也不必做整个结构的复制。

9.2.2程序实例

int main() {
    int n, inum = 0;
    ACCITEM accbook[NACCOUNT]; 

    initialization();
    while ((n = getcommand()) >= 0) {
    switch (n) {
    case 0: /* 由用户得到账目文件名并读入 */
        inum = readfile(NACCOUNT, accbook);
        break;
    case 1: /* 计算 终余额 */
        balance(inum, accbook);
        break;
    case 2: /* 统计所有收入 */
        receipts(inum, accbook);
        break;
    case 3: /* 统计所有支出 */
        expenditures(inum, accbook);
        break;
    case 4: /* 打印大额支出,向用户要求额度限 */
        printsome(inum, accbook);
        break;
    default: /* 错误命令。输出错误信息 */
        errmessage();
        break;
    }
}
    finalization();
    return 0;
} 

9.3联合(union)

一个联合是几个类型不同(也可以相同)的成员的组合,其中每个成员各有一个名字。从这些方面看,联合与结构很相似。联合与结构的差异在于它们的表示方式不同。在一个结构(变量)里,结构的各成员顺序排列存储,每个成员都有自己独立的存储位置。联合的情况不是这样,一个联合变量的所有成员共享从同一片存储区。因此一个联合变量在每个时刻里只能保存它的某一个成员的值。

union {
    int n;
    double x;
    char c;
} u1, u2;

9.4枚举(enum)

枚举说明的基本形式是:

    enum 枚举标志 {枚举常量名, ...}; 

9.6链接结构(自引用结构)

简单的链接结构是通过线性链接形成的表,或称链接表。

二叉树结构:

两种方式定义自引用结构:

    char word[20];
    int count; 
typedef struct node {
    char word[20];
    int count;
    struct node *next;
} NODE, *LINK;

9.7字段

原文地址:https://www.cnblogs.com/gdman/p/10059728.html

时间: 2024-07-30 05:09:30

2018-2019-1 20189221 《从问题到程序》第 8 周学习总结的相关文章

20172319 2018.03.12-19 《程序设计与数据结构》第2周学习总结

学号 20172319 2018.03.12-19 <程序设计与数据结构>第2周学习总结 教材学习内容总结 1.字符串:基本定义:print与println方法的区别:字符串的拼接:转义序列的应用. 2.变量与赋值:变量:常量:赋值语句. 3.基本数据类型:四整二浮点一字符一布尔. 4.表达式:运算符的种类及其使用规则. 5.数据类型转换:基本数据类型间的转换(扩展及压缩):数据转换方式:赋值(只能扩展).提升.强制. 6.交互式程序:Scanner 类. 教材学习中的问题和解决过程 问题1:

20172319 2018.03.27-04.05 《Java程序设计》第4周学习总结

20172319 2018.03.27-04.05 <Java程序设计>第4周学习总结 教材学习内容总结 第四章 编写类 类与对象的回顾:对象是有状态的,状态由对象的属性值确定.属性由类中的声明的变量所定义.对象的操作可能改变该对象的状态.对象的操作由 类中声明的方法定义. 类的分析:类的成员(类的数据和方法):构造方法(给类赋初值):实例数据(变量声明的位置定义其作用域):UML类图(类及其对象关系可视化描述). 封装:(1) 可见性修饰符:public(公有):private(私有,只能从

2018-2019-1 20189221 《构建之法》第一周学习总结

2018-2019-1 20189221 <构建之法>第1周学习总结 教材学习内容总结 第 1 章 概论 理论和知识点: 计算机科学的领域,软件工程与计算机科学的关系,软件的特性,软件工程的定义与组成部分 1.1 软件 = 程序 + 软件工程 程序 = 数据结构 + 算法 简单的应用程序--->满足各种功能的应用软件--->保证服务质量的软件服务 软件工程的要求质量保证.用户体验.国际化和本地化 软件工程的工作有源代码管理.配置管理.软件项目的管理.需求分析.软件测试.程序理解.软

信息安全程序设计基础第二周学习总结

:tabe fn     在一个新的标签页中编辑文件fngt     切换到下一个标签页gT     切换到上一个标签页:tabr     切换到第一个标签页:tabl     切换到最后一个标签页:tabm [N]     把当前tab移动到第N个tab之后对,正如你所想象的那样,跟eclipse, ue等的标签页是一个意思!窗口命令ctrl+w s     水平分割窗口ctrl+w w     切换窗口ctrl+w q     退出当前窗口(由于同时有多个文件,此命令不会影响其他窗口)ctr

201771010101 白玛次仁 《2018面向对象程序设计(Java)》第十六周学习总结

实验十六  线程技术 实验时间 2017-12-8 1.学习总结: 1.程序 是一段静态的代码,它应用程序执行蓝 是一段静态的代码,它应用程序执行蓝 本.2.进程 是程序的一次动态执行,它对应了从代码加 是程序的一次动态执行,,它对应了从代码加 载.执行至完毕的一个整过程. 3.操作系统为每个进程分配一段独立的内存空间和 系统资源,包括:代码数据以及堆栈等.每 系统资源,包括:代码数据以及堆栈等.每 一个进程的内部数据和状态都是完全独立. 4.多任务操作系统 中,进程切换对 CPU 资源消耗较

酷客多荣获“2018年度中国最具创新力小程序品牌”奖

2018中国企业品牌经济峰会于今日圆满结束,此次中国企业品牌经济峰会暨年度品牌经济指数百强发布盛典(以下简称峰会)在北京举行,峰会邀请了杰出品牌商.投资界大咖.行业领袖嘉宾及500余创业者参加,众多重量级嘉宾到场分享经验. 峰会由中国品牌经济研究院主办,希鸥网.CEO传媒承办,中国品牌经济研究院是最权威的品牌价值评估机构和品牌经济传播机构,围绕品牌和经济两大课题深入研究,形成独立的学术品格和研究价值观.本次活动上公布了"2018年度中国企业服务品牌经济指数100强",百强榜单主要参考公

BAT架构师2019年最新总结,从程序员到CTO,从专业走向卓越

2019年最新总结,从程序员到CTO,从专业走向卓越,大牛分享文档pdf与PPT整理 整理大牛分享文档如下,持续更新一线开发架构,技术文档 下载地址:https://github.com/0voice/from_coder_to_expert 网易蜂巢公有容器云架构之路 新浪微博redis优化历程 微博Cache架构设计实践 Go在大数据开发中的经验总结 基于Go构建滴滴核心业务平台的实践 Go in TiDB 负载均衡利器 HAProxy功能剖析及部署案例 高可用技术的实践分享 高性能存储及文

20172319 2018.03.05-2018.03.11 《程序设计与数据结构》第1周学习总结

学号20172319 2018.03.05-2018.03.11 <程序设计与数据结构>第1周学习总结 教材学习内容总结 复习上学期导论课所学知识 认识.了解与Java相关的基本知识:二符一字.四类编程语言.三种机器 程序中定义的标识符不能以数字开头且有&符号的标识符无效 教材学习中的问题和解决过程 问题1:什么是URL? 解决过程:上网查询相关资料:URL简单来说就是我们常说的网址,其实是统一资源定位符,包含协议与IP地址,其作用是定位资源及显示其所在位置 代码调试中的问题和解决过程

20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)

20172319 2018.04.11 <Java程序设计教程>第7周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王志强 日期:2018.04.11 必修/选修:必修 目录 测试内容 测试要求 实验步骤 前期准备 需求分析 代码实现及解释 程序运行结果及代码截图 测试过程及遇到的问题 参考资料 测试内容 完成编程项目PP7.4:具体参考<java程序设计教程>(第八版) Compareble接口的实现 测试要求