王清欢Randy 王清欢Randy
首页
  • 编程语言

    • C/C++ 学习笔记
    • Golang 学习笔记
  • 算法分析

    • LeetCode 刷题笔记
  • 操作系统

    • Linux 基础
    • Vim 实用技巧
    • Shell 脚本编程
    • GDB 学习笔记
  • 开发工具

    • Git 学习笔记
  • 分布式理论

    • 共识算法
    • 分布式事务
  • 数据库内核

    • PostgreSQL
    • Postgres-XL
  • hidb
  • pgproxy
  • 实用技巧
  • 学习方法
  • 资源分享
GitHub (opens new window)
首页
  • 编程语言

    • C/C++ 学习笔记
    • Golang 学习笔记
  • 算法分析

    • LeetCode 刷题笔记
  • 操作系统

    • Linux 基础
    • Vim 实用技巧
    • Shell 脚本编程
    • GDB 学习笔记
  • 开发工具

    • Git 学习笔记
  • 分布式理论

    • 共识算法
    • 分布式事务
  • 数据库内核

    • PostgreSQL
    • Postgres-XL
  • hidb
  • pgproxy
  • 实用技巧
  • 学习方法
  • 资源分享
GitHub (opens new window)
  • C语言基础

    • 数据类型
    • 指针与字符串
    • 结构类型
      • 3.1枚举
      • 3.2结构体
      • 3.3类型
    • 链表
    • 程序结构
    • 文件
  • C++面向对象编程

    • C++面向对象

      • 从 C 到 C++
      • C++ 类和对象基础
      • C++ 构造函数与析构函数
      • C++ 类和对象提高
      • 运算符重载
      • C++ 继承
      • C++ 多态
    • C++ STL

      • C++ 输入输出流
      • C++ 泛型编程
      • C++ string类
      • C++ 标准模板库 STL 概述
      • C++ 标准模板库 STL 顺序容器
      • C++ 标准模板库 STL 函数对象
      • C++ 标准模板库 STL 关联容器
      • C++ 标准模板库 STL 容器适配器
    • C++ 新特性

      • C++11 新特性
  • C&Cpp学习笔记
  • C语言基础
王清欢
2023-11-18
目录

结构类型

# 结构类型

# 3.1枚举

  • 常量符号化:增加代码可读性,用名称代替固定的数字常量
  • 枚举类型:enum name{elem1,elem2,elem3};,枚举量都是int
  • 自动计数的枚举:enum name{elem1,elem2,elem3,len};其中len的值可以直接作为枚举类型的枚举量个数及其长度
  • 枚举的作用:声明有排比意义的符号化常量,枚举比const int更加方便

# 3.2结构体

  • 结构体的声明:结构体是抽象的,结构变量是实体

    //有名结构体
    struct date{
    	int year;
    	int month;
    	int day;
    };
    
    struct date today = {2019,11,29};//初始化
    struct date today = {.month=11,.day=29};//用this指针部分初始化,未赋值给0
    
    //无名结构体
    struct {
        int month;
        int day;
    }day1,day2;
    
    day1.month = 11;
    day1.day = 27;
    day2.month = 11;
    day2.day = 28;
    
    //有名结构体,并声明结构体变量
    struct date{
    	int year;
    	int month;
    	int day;
    }today;
    
    today.year = 2019;
    today.month = 11;
    today.day = 29;
    
  • 结构体的运算3.2.1.c

    • 直接用结构变量名字访问

    • 整个结构可以赋值,取地址也可以传递函数参数

      ​ p = (struct date){2019,11,29};

      ​ p1 = p2;

  • 结构体的指针:结构变量的名称不是其地址,需要&today来取地址。

结构体与函数

  • 结构体作为函数参数int numberOfDays(struct date d){},3.2.2.c

    1. 结构体可以作为形式参数传入函数,在该函数内结构体变量被拷贝
    2. 函数可以返回一个结构变量
  • 结构体作为输入:不像数组一样传值也传地址,结构体变量只传值

  • 结构体输入并返回

    1. 在函数内创建一个临时的结构体变量,将改变的值通过临时变量返回

      struct date getStruct()
      {
      	struct date p;
      	scanf("%d",&p.x);
      	scanf("%d",&p.y);
      	return p;
      }
      
    2. 通过指向结构的指针,传地址:用->表示指针所指向的结构体变量的成员

      struct point* getStruct(struct point *p)
      {
      	scanf("%d",&p->x);
      	scanf("%d",&p->y);
      	return p;
      }
      

结构体中的结构体

  • 结构体数组
  • 结构体中的结构体
  • 结构体中的结构体的数组

# 3.3类型

  • 自定义数据类型:使用typedef声明一个已有的数据类型的新名字

  • 使用typedef定义结构体的别名 : typedef oldname newname;

    typedef struct Date
    {
     	int month;
        int day;
        int year;
    };
    
    Date d = {2019,11,27};
    
  • union共享存储空间的结构体

上次更新: 2023/11/19, 12:55:48
指针与字符串
链表

← 指针与字符串 链表→

Theme by Vdoing | Copyright © 2023-2024 Wang Qinghuan | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式