程序设计C语言(4)-创新互联

结构类型
  • 引入: 离散——>相同数据类型的数组——>数据类型各不相同的结构体
  • 结构的定义:结构的定义描述了组织形式,没有分配内存空间
struct 结构名
{数据类型 成员名1;
	数据类型 成员名2;
	......
	数据类型 成员名n;
};
可以嵌套定义
  • 结构变量的定义:<存储类型>
  • struct 结构名 结构变量名;分配内存空间
  • 结构变量的使用形式:
    • 结构变量名.成员名
    • 不能将结构作为整体参加数据处理,而是对各个成员项数据进行操作和运算。
  • 结构变量的初始化:
    • struct student wang ={“wang wu”,20190101,‘F’,85,80};顺序、个数、数据类型对应相同
  • 结构数组
    • <存储类型>struct 结构名 结构数组名[元素个数] [={初值表}];相同结构体变量的数组
    • 初始化:struct student man[] ={
      {“王伟”,20,‘八区231’,423201},
      {“张强”,23,’三区102‘,423210}
      };
    • 访问方式:man[0] , man[0].age
  • 结构指针
    • <存储类型>struct 结构名 *结构指针名 [=初始地址]
    • struct student *ptr =man[0];
    • 访问方式
      • 成员访问符 ’.':(*结构指针名).成员名(*man).name 注意: “.” 的优先级高,所以“ *man ”要括起来
      • 指针运算符 ‘->’ :结构指针名->成员名man->name
  • 结构体变量在函数间传递
    • 4种方法:①结构体变量的成员作参数②结构体变量作参数③结构变量地址作参数④返回值传递结构体
  • 复杂结构体的设计:研究底层对象的属性、逐层向上整合、逐层嵌套结构体
位字段
  • 应用:过程控制、参数检测、数据通信

    创新互联建站是一家专注于成都做网站、网站设计与策划设计,平乡网站建设哪家好?创新互联建站做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:平乡等地区。平乡做网站价格咨询:13518219792
  • 意义:压缩存储,减少占用的宝贵空间,嵌入式程序设计

  • 限制:严格依赖于机器硬件,可移植性相对较差

  • 定义:以二进制位为单位的字段组成的数据;一个字节中按位划分不同的区域,即位段

  • 位字段结构:类型 [成员名]:位数;

    在这里插入图片描述
    在这里插入图片描述
    注意:①无名位字段指定长度:依次占用同一个字中的对应位数
    ②无名位字段指定长度为0:依次占用同一个字中的同一字节下的剩余所有位数,其后一个成员从下一字节开始存放
    ③一个位段必须存储在同一存储单元下(按字划分即为同一个字中)
    ④可以单独对成员项作运算,但是不能作 &取地址运算
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

  • 访问方式:成员访问 ‘.’ 、指针访问’->

联合union
  • 定义:不同数据类型的数据使用相同的存储区域,这种数据结构类型称为联合体
  • 理解:union中的每个成员都从union的首地址开始存放,任意时刻只有一个成员真正的占用了内存,成员间相互排斥所以和结构体的唯一区别:内存是否共用
    在这里插入图片描述
  • union的大小:与大的成员项大小相等,如:position[10]
  • union的使用:使用union中的成员时,数据类型必须对应当前时刻的数据类型,定义什么类型的成员,则只能输出该类型的成员。(编译通过,但结果错误)
  • 作用:中断寄存器值提取、大小端判断、键值提取

    在这里插入图片描述在这里插入图片描述

枚举
  • 枚举类型:限定了取值范围的整形类型,属于基本数据类型
  • 构造类型:数组、结构体、位字段、联合
  • 定义: enum 枚举类型名 {枚举元素1,枚举元素2,…,枚举元素n};
    enum color {black,blue,red,green,white}; enum color col; col = red;
  • 初始化:隐式、显式; 显式申明时,后一个元素从前一个下标开始在这里插入图片描述
  • 输出:枚举元素等价于整数。如果按%d输出元素,则输出0~len-1的编号
  • 作用域:局部枚举则在函数内部使用;全局枚举则在整个程序中使用。
  • 注意:枚举常量使用大写字母标识,枚举常量不能重新赋值。
类型定义语句
  • 引入:对已定义的数据类型赋予别名,使用别名来定义变量
  • 定义: typedef<类型说明><新别名1,新别名2…>;typedef int INTEGER; INTEGER a,b;
  • 好处:
    • 简化书写量tepedef struct tagComplex{double real; double imag;}COMPLEX; COMPLEX c1,c2;
    • 突显变量的实际意义tepedef int LENGTH, WIDTH; LENGTH x; WIDTH y;
    • 可移植性在这里插入图片描述
  • typedef 与 #define 的区别
    • #define 属于预处理语句,在程序编译前将所有INTEGER 替换为 int ,形成新的代码
    • typedef 属于编译时,不是简单字符串替换,可以将数组类型、函数指针定义为新别名在这里插入图片描述
链表
  • 特点:可动态分配的数据结构
  • 组成:头指针、节点
  • 基本操作:链表建立、节点插入、节点删除、链表删除
文件
  • 概念
    • 数据流:C语言将文件看作顺序字节流,每个文件用文件结束符EOF结束
    • 缓冲区:在程序执行时,所提供的额外内存,暂存数据提高效率
    • 文件类型:二进制文件、文本文件
      • 二进制文件:占用空间小、速度快、数据保存不会丢失有效位
      • 文本文件:占用空间大、速度慢、便于对字符进行操作
    • 存取方式:顺序存取、随机存取
      • 顺序存取:按照文件的逻辑地址顺序进行存取,常用于文本文件
      • 随机存取:用户以任意次序请求某个记录,在请求时给出起始存取地址,常用于二进制文件
    • 文件类型指针 FILE
      在这里插入图片描述
  • 基本操作:打开、定位、读写、关闭

    在这里插入图片描述
    打开: fopen ( )
    在这里插入图片描述关闭:fclose ()
    在这里插入图片描述
    数据块读写函数:fread () 、fwrite ()
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    格式化读写函数:fscanf ( ) 、fprintf ( ),在这里插入图片描述在这里插入图片描述
    字符读写函数:fgetc () 和 fputc ()
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    字符串读写函数 fgets () 和 fputs ()
    在这里插入图片描述
    在这里插入图片描述
    定位: rewind () 和 fseek ()
    rewind: void rewind(FILE *fp) 重置文件位置指针到文件开头
    fseek: int fseek(FILE *fp,long offset,int whence)
    ①改变文件位置指针的位置,成功返回0,失败返回-1
    ②offset表示移动的字节数,要求为long型保证文件长度>64KB时不会出错,如果offset为常量,则初始化时后面加’L’,如:long offset = 123L;
    ③whence表示从文件的什么位置开始计算位移量在这里插入图片描述

  • BMP位图文件
    在这里插入图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:程序设计C语言(4)-创新互联
URL链接:http://scyanting.com/article/jpgcg.html