第十四章 - DDL-Killer/The-road-of-Linxu-Group2024 GitHub Wiki

建立结构声明

  • 结合声明描述了一个结构的组织布局 image
  • 访问结构成员:使用结构成员运算符——点(.)访问结构中的成员

结构数组

声明结构数组

嵌套结构数组

指向结构的指针

声明和初始化结构指针

  • struct guy * him;
  • 结构名并不是结构的地址,因此要在结构名面前加上&运算符

用指针访问成员

  • 指针不能用(.)点符号,指针指向的是结构名,所以可以用->

向函数传递结构的信息

传递结构成员

结构和结构指针的选择

  • 指针优点:执行快;缺点:无法保护数据
  • 结构优点:传递的是副本,保护了原始数据;缺点:浪费时间和存储空间

结构中的字符数组和字符指针

结构指针和malloc()

  • getinfo()把用户的输入读入临时数组中,调用malloc()函数分配存储空间
  • 结构体中存储的是字符串的地址,而字符串未存储在结构中

把结构内容保存到文件中

  • 存储在一个结构的整套信息称为记录,单独的项被称为字段

链式结构

联合

  • 联合是一种数据类型,它能在同一个内存空间中存储不同的数据类型(不是同时储存)
  • 用法:设计一种表以存储既无规律、事先也不知道顺序的混合类型
  • 创建联合需要一个联合模板和联合变量

使用联合

  • 点运算符表示正在使用哪种数据类型
  • 在联合中,一次只存储一个值

枚举类型

  • 可以用枚举类型声明符号名称来表示整型常量
  • 目的是提高程序的可读性 pg:enum spectrum {red,orange,yellow,green,blue,violet};
    enum spectrum color;
  • 第一个声明创建了spetrum作为标记名,第二个声明让color作为该类型的变量
  • color的值可能是red、orange等等
  • 这些符号常量被称为枚举符
  • 默认情况下,枚举列表中的常量都被赋予0,1,2等
  • 在枚举声明中,可以为枚举常量指定整数值

共享名称空间

  • C语言使用名称空间标识程序中的各部分,即通过名称来识别
  • 作用域是名称空间概念的一部分:两个不同作用域的同名变量不冲突;两个相同作用域的同名变量冲突

typedef简历

  1. 与#define不同,typedef创建的符号名只受限于类型,不能用于值
  2. typedef由编译器解释,不是预处理器
  3. 比#define灵活
  • 定义的是类型标识符,而不是简单替换

函数和指针

void show(void (* fp)(char *),char * str)