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

主要内容

  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.mzph.cn/bicheng/42930.shtml

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

相关文章

从数据到洞察:DataOps加速AI模型开发的秘密实践大公开!

作者 | 代立冬,白鲸开源科技联合创始人&CTO 引言 在AI驱动的商业世界中,DataOps作为连接数据与洞察的桥梁,正迅速成为企业数据战略的核心。 在WOT全球技术创新大会2024北京站,白鲸开源联合创始人&CTO 代立冬 在「大数据…

严重的OpenSSH漏洞威胁数百万Linux系统

Qualys威胁研究部门(TRU)发现了OpenSSH服务器 (sshd) 中的一个严重漏洞,可能影响全球超过 1400 万个Linux系统。该漏洞被指定为 CVE-2024-6387,允许在基于 glibc 的 Linux 系统上以 root 权限进行远程未经身份验证的代码执行 (RCE)。 此漏洞源于信号处理…

Python 处理Excel 文件, openpyxl 库的使用:

下载&#xff1a; pip install openpyxl 基本使用&#xff1a; 新建一个Excel 工作簿&#xff1a; 使用openpyxl 需要先导入一个Workbook 类&#xff0c; 使用它可以创建一个Workbook<工作簿>对象&#xff0c; 也就是创建一个Excel表文件&#xff0c; web.active 可用来…

5款好用公司监控软件分享|管理者必看

当今社会&#xff0c;企业数据安全和员工工作效率成为了管理者不可忽视的重要议题。 选择合适的公司监控软件&#xff0c;不仅有助于提升管理效率&#xff0c;还能有效保障企业信息安全。 下面小编将为您分享五款备受好评的公司监控软件&#xff0c;助力管理者更好地管理企业…

公司可以拿监控辞退员工吗?有什么法律依据?

李经理&#xff1a;小张&#xff0c;我听说最近人力资源部打算使用我们新安装的安企神软件来监控员工的工作行为&#xff0c;以提高工作效率和确保公司信息安全。不过&#xff0c;我有点担心这会不会触及法律红线&#xff0c;比如如果我们发现某位员工严重违反公司规定&#xf…

ElasticSearch学习篇14_《检索技术核心20讲》进阶篇之大倒排索引

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243&#xff0c;文档形式记录笔记。 内容 主要是海量数据的大倒排索引的一些原理设计思想&#xff0c;ES底层就是基于这些设计思想以及原理&#xff0c;主要涉及读写分离、索引分层等…

什么是离散化?

离散化 题目 你会这个题 吗&#xff1f; 题目 假定有一个无限长的数轴&#xff0c;数轴上每个坐标上的数都是 0 0 0。 现在&#xff0c;我们首先进行 n n n 次操作&#xff0c;每次操作将某一位置 x x x 上的数加 c c c。 接下来&#xff0c;进行 m m m 次询问&#x…

第十二节 设置默认文本提示

原型中我们常会用到文本框默认提示一些文本&#xff0c;获取焦点后消失文本提示&#xff0c;那如何实现呢&#xff1f;请看下面这个简单案例。 一、添加文本框也可以是矩形或者其他元件 二、添加文本样式 三、设置提示文本 四、元件获取焦点时将以隐藏提示 五、看效果 默认提示…

ShardingSphereConnection@4691d] will not be managed by Spring

boot整合分库分表后启动执行&#xff0c;提示链接不被spring管理&#xff0c; 应该看自己需要&#xff0c; 解决&#xff1a;

vue3+ts 重复参数提取成方法多处调用以及字段无值时不传字段给后端

参数提取前的写法&#xff0c;此写法值为空的时候也会传空字段给后端 会把无值的空字段传给后端 修改后的写法&#xff0c;不会把没有值的字段传给后端 // 列表和导出需要传给后端的公共参数&#xff08;加 || undefined即可过滤空字段&#xff09; const getCurentParam () …

昇思25天学习打卡营第14天|Pix2Pix实现图像转换

Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Phillip Isola等作者在2017年CVPR上提出的&#xff0c;可以实现语义/标签到真实图片、灰度图到彩色图、航空图到…

leetcode--二叉搜索子树的最大键值和

leetcode地址&#xff1a;二叉搜索子树的最大键值和 给你一棵以 root 为根的 二叉树 &#xff0c;请你返回 任意 二叉搜索子树的最大键值和。 二叉搜索树的定义如下&#xff1a; 任意节点的左子树中的键值都 小于 此节点的键值。 任意节点的右子树中的键值都 大于 此节点的键值…

IOC、DI<4> Unity

IOC&#xff08;&#xff09;&#xff1a;控制反转&#xff0c;把程序上层对下层的依赖&#xff0c;转移到第三方的容器来装配 是程序设计的目标&#xff0c;实现方式包含了依赖注入和依赖查找&#xff08;.net里面只有依赖注入&#xff09; DI&#xff1a;依赖注入&#xff0c…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(一)一些样式的调整使用

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、比如下面的发起人双击后出现的界面不正常&#xff0c; 看它的样式主要是这个里面的margin-left应该太小了&#xff0c; [data-v-45b533d5] .el-tabs__content { margin-top: 50px;mar…

7.1作业6

uart4.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_uart.h" //rcc/gpio/uart4初始化 void hal_uart4_init(); //发送一个字符 void hal_put_char(const char s…

香橙派编译linux内核支持ebpf和虚拟WIFI

前言 上一篇文章香橙派5plus上跑云手机方案一 redroid(带硬件加速)中说了怎么运行redroid&#xff0c;这篇补一下怎么修改参数编译内核。 补充 上篇文章有个内容需要补充一下&#xff1a;更新完内核需要用下面的命令防止内核被apt更新&#xff0c;不然后面使用apt update又回…

浅析C++引用

浅析C引用"&" ​ C中引入了一个新的语言特性——引用(&)&#xff0c;它表示某一对象的别名&#xff0c;对象与该对象的引用都是指向统一地址。那么我们就来看看关于引用的一些知识点吧&#x1f9d0; 特性 引用在定义时必须初始化一个变量可以有多个引用引…

【Python】一文向您详细介绍 np.inner()

【Python】一文向您详细介绍 np.inner() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;曾…

JavaWeb系列二十二: 线程数据共享和安全(ThreadLocal)

韩顺平-线程数据共享和安全ThreadLocal 什么是ThreadLocal?ThreadLocal环境搭建ThreadLocal快速入门ThreadLocal源码阅读threadLocal.set()源码threadLocal.get()源码 什么是ThreadLocal? ThreadLocal的作用: 可以实现在同一个线程数据共享, 从而解决多线程数据安全问题.Thr…

小阿轩yx-Haproxy搭建Web群集

小阿轩yx-Haproxy搭建Web群集 Haproxy 简介 提供高可用性 能做出标准的负载均衡 支持虚拟主机 具备健康检查能力 能用于各式各样的代理 轻量级代理环境 解决方案优势 免费 快速 可靠 特性 特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或…