C语言下结构体、共用体、枚举类型的讲解

news2024/10/6 1:34:13

主要内容

  1. 结构体
  2. 结构体数组
  3. 结构体指针
  4. 包含结构体的结构
  5. 链表
  6. 链表相关操作
  7. 共用体
  8. 枚举类型

结构体

结构体的类型的概念

                 

结构体实现步骤

结构体变量的声明

struct

struct  结构体名{                                               

     数据类型  成员名1;

     数据类型  成员名2;

     ......

     数据类型  成员名n;

};

struct  stu{

     int  num;

     char  name[20];

     char  sex;

     float  score;

};

结构体变量的定义

1.先定义结构体再定义结构体变量

struct  student  student1,student2;

2.定义类型同时定义变量

struct  结构体名{

     数据类型  成员名1;

     数据类型  成员名2;

     ......

     数据类型  成员名n;

}变量1,...,变量n;

struct Product

{

       char cName[10];    /*产品名称*/

       char cShape[20];    /*形状*/

       char cColor[10];    /*颜色*/

       int iPrice;    /*价格*/

       char cArea[20];    /*产地*/

}product1,product2;    /*定义结构体变量*/

3.直接定义变量

struct {

     数据类型  成员名1;

     数据类型  成员名2;

     ......

     数据类型  成员名n;

}变量1,...,变量n;

struct

{

       char cName[10];    /*产品名称*/

       char cShape[20];    /*形状*/

       char cColor[10];    /*颜色*/

       int iPrice;    /*价格*/

       char cArea[20];    /*产地*/

}product1,product2;    /*定义结构体变量*/

结构体注意事项

结构体变量的引用

结构体类型的初始化

struct Student

{

         char cName[20];

         char cSex;

         int iGrade;

} student1 = {"HanXue","W",3};  /*定义变量并设置初始值*/

结构体数组

结构体数组与数组的区别

相同点:

       结构体数组和数组的定义与引用规则是相同的

不同点:

     结构体数组中的所有元素为结构体变量

     普通数组中的所有元素为基本类型变量

定义结构体数组

struct  结构体名{

     成员列表

}数组名[数组长度];

struct Student  /*学生结构*/

{

       char cName[20];  /*姓名*/

       int iNumber;  /*学号*/

       char cSex;  /*性别*/

       int iGrade;  /*年级*/

} student[5];  /*定义结构体数组*/

struct Student student[5];   /*定义结构体数组*/

struct    /*学生结构*/

{

       char cName[20];  /*姓名*/

       int iNumber;  /*学号*/

       char cSex;  /*性别*/

       int iGrade;  /*年级*/

} student[5];  /*定义结构体数组*/

初始化结构体数组

struct 结构体名{

         成员列表;

}数组名={初始值列表};

struct Student  /*学生结构*/

{

        char cName[20];  /*姓名*/

        int iNumber;  /*学号*/

        char cSex;  /*性别*/

        int iGrade;  /*年级*/

} student[5]={{"WangJiasheng",12062212,'M',3},

   {"YuLongjiao",12062213,'W',3},

   {"JiangXuehuan",12062214,'W',3},

   {"ZhangMeng",12062215,'W',3},

   {"HanLiang",12062216,'M',3}};  /*定义数组并设置初始值*/

结构体指针

指向结构体变量的指针

指向结构体数组的指针

    结构体指针变量不但可以指向一个结构体变量,还可以指向结构体数组,此时指针变量的值就是结构体数组的首地址

    结构体指针变量也可以直接指向结构体数组中的元素,这时指针变量的值就是该结构体数组元素的首地址

结构体作为函数参数

1.使用结构体变量作为函数参数

        void Display(struct Student stu);

2.使用指向结构体变量的指针作为函数的参数

       void Display(struct Student* stu)

3.使用结构体变量的成员作为函数的参数

        Display(student.fScore[0]);

包含结构的结构

struct student  /*学生信息结构*/

{

       char name[30];  /*姓名*/

       int num;  /*学号*/

       char sex[20];  /*性别*/

       struct date birthday;  /*出生日期*/

}student={"苏玉群",12061212,"",{1986,12,6}};  /*为结构变量初始化*/

链表

链表概述

动态内存分配函数

创建动态链表

         所谓建立动态链表就是指在程序运行过程中从无到有地建立起一个链表,即一个一个地分配节点的内存空间,然后输入节点中的数据并建立节点间的相连关系。

链表的相关操作

链表的插入操作

链表的删除操作

共用体

共用体的概念

共用体变量的引用

共用体变量的初始化

        union DataUnion Union={97};

共用体类型的数据特点

枚举类型

枚举类型的概念

枚举类型的定义

      enum  枚举标识符{常量列表}

      enum Colors(Red=1,Green,Blue);

malloc函数

使用指向结构体变量的指结构体ts

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1903719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity】unity学习扫盲知识点

1、建议检查下SystemInfo的引用。这个是什么 Unity的SystemInfo类提供了一种获取关于当前硬件和操作系统的信息的方法。这包括设备类型,操作系统,处理器,内存,显卡,支持的Unity特性等。使用SystemInfo类非常简单。它的…

1999-2022年企业持续绿色创新水平数据

企业持续绿色创新水平数据为研究者提供了评估企业在绿色技术领域创新持续性和能力的重要视角。以下是对企业持续绿色创新水平数据的介绍: 数据简介 定义:企业持续绿色创新水平反映了企业在一定时期内绿色专利申请的持续性和创新能力。计算方法&#xf…

【Linux】进程的概念 + 查看进程

前言: 在前面我们学习了Liunx的基本指令和权限相关知识,还有基本工具的使用,有了以上的基础知识我们本章将正式接触Linux操作系统。 目录 1.冯诺依曼体系结构1.1 内存存在的意义1.2 程序加载到内存的含义1.3 程序的预加载: 2 .认识…

英国“王曼爱华”指的是哪几所高校?中英双语介绍

中文版 英国“王曼爱华”指的是伦敦大学国王学院、曼彻斯特大学、爱丁堡大学和华威大学这四所院校。以下是对伦敦大学国王学院、曼彻斯特大学、爱丁堡大学和华威大学这四所英国顶尖大学的详细介绍,包括它们的建校历史、专业优势、优秀校友和地理位置。 伦敦大学国…

图像增强 目标检测 仿射变换 图像处理 扭曲图像

1.背景 在目标检测中,需要进行图像增强。这里的代码模拟了旋转、扭曲图像的功能,并且在扭曲的时候,能够同时把标注的结果也进行扭曲。 这里忽略了读取xml的过程,假设图像IMG存在对应的标注框,且坐标为左上、右下两个…

前后端的学习框架

前后端的学习框架 视频链接:零基础AI全栈开发系列教程(一)_哔哩哔哩_bilibili

C++第一弹 -- C++基础语法上(命名空间 输入输出 缺省参数 函数重载 引用)

目录 前言一. C关键字(C98)二. 命名空间1.命名空间的定义2.命名空间的使用3.其它部分 三. C输入&输出四. 缺省参数1. 缺省参数的概念2.缺省参数的分类 五. 函数重载1.函数重载的概念2. 为什么C支持函数重载, 而C语言不支持重载呢? 六. 引用1.引用的概念2.引用的特性3.常引…

汽车报价资讯app小程序模板源码

蓝色实用的汽车报价,汽车新闻资讯,最新上市汽车资讯类小程序前端模板。包含:选车、资讯列表、榜单、我的主页、报价详情、资讯详情、询底价、登录、注册、车贷,油耗、意见反馈、关于我们等等。这是一款非常全的汽车报价小程序模板…

ThreadPoolExecutor - 管理线程池的核心类

下面是使用给定的初始参数创建一个新的 ThreadPoolExecutor &#xff08;构造方法&#xff09;。 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,…

缓冲器的重要性,谈谈PostgreSQL

目录 一、PostgreSQL是什么二、缓冲区管理器介绍三、缓冲区管理器的应用场景四、如何定义缓冲区管理器 一、PostgreSQL是什么 PostgreSQL是一种高级的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它以其稳定性、可靠性和高度可扩展性而闻名。它最初由加…

Static关键字的用法详解

Static关键字的用法详解 1、Static修饰内部类2、Static修饰方法3、Static修饰变量4、Static修饰代码块5、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java编程语言中&#xff0c;static是一个关键字&#xff0c;它可以用于多种上…

【Java探索之旅】初识多态_概念_实现条件

文章目录 &#x1f4d1;前言一、多态1.1 概念1.2 多态的实现条件 &#x1f324;️全篇总结 &#x1f4d1;前言 多态作为面向对象编程中的重要概念&#xff0c;为我们提供了一种灵活而强大的编程方式。通过多态&#xff0c;同一种操作可以应用于不同的对象&#xff0c;并根据对象…

数据库系统原理 | 查询作业2

整理自博主本科《数据库系统原理》专业课自己完成的实验课查询作业&#xff0c;以便各位学习数据库系统概论的小伙伴们参考、学习。 *文中若存在书写不合理的地方&#xff0c;欢迎各位斧正。 专业课本&#xff1a; ​ ​ ———— 本次实验使用到的图形化工具&#xff1a;Heidi…

深入分析SSL/TLS服务器的证书(C/C++代码实现)

SSL&#xff08;Secure Sockets Layer&#xff09;和TLS&#xff08;Transport Layer Security&#xff09;是网络安全领域的重要协议&#xff0c;它们在保护网络通信中发挥着至关重要的作用。这些协议通过加密和身份验证机制&#xff0c;确保数据在传输过程中的机密性和完整性…

cs231n作业1——SVM

参考文章&#xff1a;cs231n assignment1——SVM SVM 训练阶段&#xff0c;我们的目的是为了得到合适的 &#x1d44a; 和 &#x1d44f; &#xff0c;为实现这一目的&#xff0c;我们需要引进损失函数&#xff0c;然后再通过梯度下降来训练模型。 def svm_loss_naive(W, …

python基础篇(8):异常处理

在Python编程中&#xff0c;异常是程序运行时发生的错误&#xff0c;它会中断程序的正常执行流程。异常处理机制使得程序能够捕获这些错误&#xff0c;并进行适当的处理&#xff0c;从而避免程序崩溃。 1 错误类型 代码的错误一般会有语法错误和异常错误两种&#xff0c;语法错…

最新整理的机器人相关数据合集(1993-2022年不等 具体看数据类型)

机器人安装数据是指记录全球或特定区域内工业机器人新安装数量的信息&#xff0c;这一数据由国际机器人联合会(IFR)等权威机构定期发布。这些数据不仅揭示了机器人技术的市场需求趋势&#xff0c;还反映了各国和地区自动化水平及产业升级的步伐。例如&#xff0c;数据显示中国在…

nginx相关概念(反向代理、负载均衡)

1 Nginx 是什么 Nginx是一款轻量级的Web 服务器&#xff0c;其特点是占有内存少&#xff0c;并发能力强 2 Nginx 反向代理 正向代理代替客户端去发送请求反向代理代替服务端接受请求 2.1 正向代理 若客户端无法直接访问到目标服务器 server 则客户端需要配置代理服务器 pr…

云渲染技术对电影24帧和游戏60帧渲染需求及时间效率的影响

随着云计算技术的飞速发展&#xff0c;云渲染正重塑着影视和游戏产业的制作流程。它如何影响传统电影24帧和现代游戏60帧的渲染需求与时间效率&#xff1f;本文将深入探讨云渲染带来的变革。 一、电影24帧和游戏60帧作用 电影通常以24帧每秒&#xff08;fps&#xff09;的标准…

数字化精益生产系统--IFS财务管理系统

IFS财务管理系统是一款功能丰富、高效且灵活的企业财务管理软件&#xff0c;广泛应用于多个行业和不同规模的企业中。以下是对IFS财务管理系统的功能设计&#xff1a;