20、结构体

1、结构体

        基本数据:整型 实型 字符型 --- 1个空间只能存放1个数据

        数组:多个 同种类型的数据

        结构体也是一种数据类型,是一种自定义的数据类型,需要开发者自己创造 。

        结构体可以存放不同数据类型的数据。

        比如:

                获取班级最高分同学的姓名。  ---

                字符串类型 float类型

                {"小王",500}

                {"xiaomei",700}

                {"xiaoli",400}

        比如:

                统计图书馆中图书的信息

                图书书名: 字符串

                图书作者:字符串

                图书价格:float

                图书库存:int

                {"C语言","谭浩强",34.5,20}

                {"M4","xyd",40,100}

2、结构体类型定义

        定义结构体类型:

                struct 结构体名

                {

                        成员类型 成员名;

                        成员类型 成员名;

                        ....

                };

        例:

                获取班级最高分同学的姓名。  ---

                字符串类型 float类型

                {"小王",500}

                {"xiaomei",700}

                {"xiaoli",400}

                需要两个成员:

                        姓名:字符串类型

                        分数:float类型

                struct student

                {

                        char name[20];

                        float score;

                };

        结构体类型名: struct student  ---- 类似与int 、char 不占空间,只规定了尺寸

3、结构体变量       

        结构体类型 变量名;

        结构体变量使用: 节点体变量名.成员名

struct student
{char name[20];float score;int a[5];
};// 定义一个struct student 类型的变量
struct student a;  // 开空间	   
struct student b; // 开空间// 通过结构体变量操作里面的成员 :  .语法
// a.name  --- 可以做地址
scanf("%s",a.name);
// a.score ---- &a.score
scanf("%f",&a.score);printf("%s %f\n",a.name,a.score);// b.name --- 数组名 
strcpy(b.name,"小明");
// b.score -- float
b.score = 56.7;printf("%s %f\n",b.name,b.score);// 定义第三方结构体变量,实现a和b结构体变量中的数据交换
struct student temp;
temp = a;
a = b;
b = temp;printf("%s %f\n",a.name,a.score);
printf("%s %f\n",b.name,b.score);

4、结构体指针

        是指针,指向的对象是结构体。

        定义:

                结构体类型 *指针名;

        例子:                

struct student
{char name[20];float score;			
};// 指针指向的空间  (定义变量 、 动态内存申请)
struct student *p;
struct student *q;struct student a = {"lili",500};  // &a// 指针p指向a
p = &a;

        结构体指针操作指向空间的成员:  ->

                指针名->成员名

        

struct student
{char name[20];float score;			
};// 指针指向的空间  (定义变量 、 动态内存申请)
struct student *p;
struct student *q;struct student a = {"lili",500};  // &a// 指针p指向a
p = &a;printf("%s  %f\n",p->name,p->score);			// 让q指针和p指针同指向,指向a
q = p;printf("%s  %f\n",q->name,q->score);

5、结构体数组

        数组 , 里面存放的是结构体

        定义结构体数组:

                结构体类型 数组名[元素个数];

        

struct student
{char name[20];float score;			
};// 定义一个数组存储3位同学的信息
struct student arr[3];scanf("%s",arr[0].name);
scanf("%f",&(arr[0].score));scanf("%s",arr[1].name);
scanf("%f",&(arr[1].score));scanf("%s",arr[2].name);
scanf("%f",&(arr[2].score));printf("%s %f\n",arr[0].name,arr[0].score);
printf("%s %f\n",arr[1].name,arr[1].score);
printf("%s %f\n",arr[2].name,arr[2].score);

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

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

相关文章

线程和进程(juc)

线程 一:概念辨析 1:线程与进程 进程: 1:程序由指令和数据组成,指令要执行,数据要读写,就需要将指令加载给cpu,把数据加载到内存,同时程序运行时还会使用磁盘&#x…

Java基础集合(Map)

存储特点 以键值对的形式存储, 一个元素由两个值组成 键(K-key): 无序, 无下标, 元素不可重复 值(V-value): 无序, 无下标, 元素可以重复 常用实现类 HashMap JDK1.2 底层哈希表实现 线程不安全, 效率高 LinkedHashMap JDK1.2 是HashMap的子类, 底层哈希表实现 线程不安全…

NEXT开发应用质量建议与测试指南

随着鸿蒙原生开发如火如荼的进展,NEXT对应用的质量提出了更高的要求。 NEXT的应用质量分为2个部分内容: ⚫ 体验质量: 功能数据完备、基础体验、HarmonyOS特征增强体验 ⚫ 内容合规: 资质、内容、广告、付费、开发者行为等 单元测…

java应用cpu占用过高故障排除

首先一定要清楚:java应用造成cpu过高的主要原因 1:一般是线程一直处于可运行(Runnable)状态,通常这些线程在执行无阻塞操作、循环、正则或纯粹的计算等任务 2:另一个可能造成CPU高的原因是频繁GC&#xff…

CPU是如何执行任务的?

你清楚下面这几个问题吗? 有了内存,为什么还需要 CPU Cache? CPU 是怎么读写数据的? 如何让 CPU 能读取数据更快一些? CPU 伪共享是如何发生的?又该如何避免? CPU 是如何调度任务的&#x…

最短路径算法(Dijkstra算法 + Bellman-Ford 算法 + Floyd-Warshall算法)

最短路径算法 完整版万字原文见史上最全详解图数据结构 1. Dijkstra算法(单源最短路径)(无负权边图) 算法原理 1. Dijkstra 算法通过 贪心策略 计算从一个源顶点到其他所有 顶点的最短路径。2. 时间复杂度为 O(V^2)&#xff08…

pyqt6事件概要

例子: 利用qtdesigner建立闹钟 python代码 # 导入所需要的文件 from PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QListWidgetItem from PyQt6 import uic from PyQt6.QtCore import Qt, QTime imp…

位运算符I^~

&运算:上下相等才是1,有一个不同就是0 |运算:只要有1返回的就是1 ^(亦或)运算:上下不同是1,相同是0 ~运算:非运算,与数据全相反 cpu核心运算原理,四种cpu底层小电路 例&#xf…

【求助】Tinymce组件异常

版本号 { "tinymce/tinymce-vue": "^3.0.1", "tinymce": "^5.10.9", "vue": "^2.6.10", }问题: 就是红框处点击后没有菜单出现,下面是正常的

大模型分布式训练框架——DeepSpeed

本文的主要内容是阐述DeepSpeed训练模块在跟进大模型技术中的作用,重点解析了RLHF在其中的应用。文中深入探讨了模型训练的关键概念,如显存需求、优化器迭代和混合精度训练。针对大规模模型训练,介绍了模型并行和流水线并行等分布式训练方法&…

跟着AI 学 AI, 开发一个ChatBot, 完整图文版__持续更新中

跟着AI 学 AI, 开发一个ChatBot, 完整图文版__持续更新中.记录步骤以便排查错误。 使用Python 加 Visual Studio Code,开发代码。 使用Flask 套件和 ngrok 工具。 Step 1 下载安装Python ,下载完后 在CMD 测试 Python --version. 结果出现p…

Pyside6 --Qt Designer--Qt设计师--了解+运行ui_demo_1.py

目录 一、打开Qt设计师1.1 Terminal终端1.2 打开env,GUI虚拟环境下的scripts文件1.3 不常用文件介绍(Scripts下面) 二、了解Qt设计师的各个控件作用2.1 点击widget看看效果!2.2 点击Main Window看看效果 三、编写一个简易的UI代码…

『大模型笔记』OpenAI 十二天活动第1天:o1和o1 pro

『大模型笔记』OpenAI 十二天活动第1天:o1和o1 pro 文章目录 一. 『大模型笔记』OpenAI 十二天活动第1天:o1和o1 proOpenAI的12天活动o1完整版本的发布o1 Pro模式ChatGPT Proo1的性能提升多模态输入与推理o1 Pro模式的应用模型对话与历史问题示范二. 参考文献一. 『大模型笔记…

SpringBoot 运行发生异常:java: 错误: 不支持发行版本 5

一、异常: 二、原因: 本地运行用的是JDK17,报错应该是项目编译配置使用的Java版本不对,需要检查一下项目及环境使用的Java编译版本配置。 三、解决:

2024.12.2——[极客大挑战 2019]Secret File 1

知识点:抓包 代码审计 filter伪协议 一、解题步骤 step 1 查看源代码中的信息 查看源代码发现一个php文件:[./Archive_room.php](http://72df1f22-85bf-47bb-b23a-efcaf88701d4.node5.buuoj.cn:81/Archive_room.php) 点进去后发现没什么用&#xff0c…

MKS EDGE Series RF Generators Power Solution 软件

MKS EDGE Series RF Generators Power Solution 软件

【汇编语言】标志寄存器(一) —— 标志寄存器中的标志位:ZF、PF、SF、CF、OF 一网打尽

前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原理,提升代码效率,尤其在嵌入式系统和性能优…

【C++】priority_queue优先队列

大家好,我是苏貝,本篇博客带大家了解C的string类的priority_queue优先队列,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1. 介绍2. 仿函数(A) 介绍(B) 控制比较逻辑 3. priority_queue和…

Python3 operator 模块

Python2.x 版本中,使用 cmp() 函数来比较两个列表、数字或字符串等的大小关系。 Python 3.X 的版本中已经没有 cmp() 函数,如果你需要实现比较功能,需要引入 operator 模块,适合任何对象,包含的方法有: o…

短视频矩阵系统开发|技术源代码部署

短视频矩阵系统通过多账号运营管理、多平台视频智能分发等功能,助力企业实现视频引流、粉丝沉淀和转化。 短视频矩阵系统是一种创新的营销工具,它整合了多账号管理、视频智能分发、数据可视化等多种功能,为企业在短视频领域的发展提供了强大…