结构体的学习

结构体与共用体,枚举

1.数据类型复习:

2结构体.

eg;统计全校同学信息    需要记录的点--- 姓名,班级,性别,成绩,年龄
        统计名字:char s[ ] [ 100 ] = { "Tmo" }
        统计班级:int ; 统计性别: char     ;  统计成绩 : float   ; 统计年龄: int
一个人的相关信息要用到5个数组,想有一种数据可以描述一个人的相关信息,就可以用结构体:

结构体:struct
描述一些原先基本数据类型不好描述的,复杂的数据类型
语法:struct + 结构体类型名
          {       
          };            //定义了一个“数据类型”   --  用户自定义的数据类型
eg:描述学生的个人信息----
struct  student                 
{
      char  name[20];       //放名字
      unsigned  char  age;    //放年龄
      等 - - - 
};
于是乎: struct student  s   ------   学生这种数据类型(等价于基本类型的种类),定义了一个s变量            按照给的类型顺序来用   struct student  s = {"Tom",20,59.5,110}  ---  名字,年纪,成绩,

注意:1.结构体 - 用来实现自定义的数据类型
           2.用结构体 : 先构造数据类型,用数据类型定义i变量,数组,指针等

访问结构体:  .  //结构体成员运算符
打印输出: printf("%d",  s . 定义的数据类型中的名字(如 name,aage))         
eg;printf(”%d“,s.name)

-> : 指向结构体成员

3.结构体的对齐规则:
1.在32位的平台上,默认都是按4字节对齐的。
2.对于成员变量,各自在自己的自然边界上对齐。
3.如果 成员变量中有比4字节大。此时整个结构体按照4字节对齐。(64位默认为8字节)
4.如果成员变量中没有有比4字节大。
此时整个结构体按照最大的那个成员对齐。


相关程序实现

1.编写一个“老师”的结构体,写出一个输入、输出的函数,打印出来

struct teacher
{char name[20];int tno;float salary;
};void printfteacher(struct teacher *t)
{printf("name   = %s\n",t-> name);printf("tno    = %d\n",t-> tno);printf("salary = %2.f\n",t-> salary);}void inputteacher(struct teacher *t)
{printf("name :");scanf("%s",t->name);printf("tno :");scanf("%d",&t->tno);printf("salary :");scanf("%f",&t->salary);
}int main(void)
{struct teacher t={0};inputteacher(&t);printfteacher(&t);}

2.编写一个学生的结构体,编写输入输出函数,找到最大成绩的学生打印信息,以学生成绩做一个排序

struct student
{char name[20];int sno;float score;
};void printfstudent(struct student *t,int len)
{int i;printf("name\tsno\tscore\t\n");for(i=0;i<len;i++){printf("%s\t",(t+i)->name);printf("%d\t",(t+i)->sno);printf("%.2f\t\n",(t+i)->score);}
}void inputstudent(struct student *t,int len)
{int i;for(i=0;i<len;i++){printf("name :");scanf("%s",(t+i)->name);printf("sno :");scanf("%d",&(t+i)->sno);printf("score :");scanf("%f",&(t+i)->score);}}
void maxstudent(struct student *t,int len)
{int i=0;float max=t->score;int j=0;for(i=0;i<len;i++){if(max<(t+i)->score){max=(t+i)->score;j=i;}}printf("max = %s %d %.2f\n",(t+j)->name,(t+j)->sno,(t+j)->score);
}int compare(const void *a,const void *b)
{const struct student *p1=a;const struct student *p2=b;return p1->score - p2->score;
}int main(void)
{struct student s[3]={0};inputstudent(s,3);maxstudent(s,3);qsort(s,3,sizeof(struct student),compare);printfstudent(s,3);return 0;
}

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

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

相关文章

12.如何将图像转化为矩阵形式

read_image (Image, printer_chip/printer_chip_01) *获取图片大小 get_image_size (Image, Width, Height) *获取区域里各点(每个点)的坐标 *Image 输入参数&#xff0c; *Rows 输出参数 数组&#xff0c; *Columns 输出参数&#xff0c;数组 get_region_points (Image, Rows…

轩辕编程(Java第十二讲):Java类的抽象性和最终类

抽象类 使用关键字abstract声明的类称为抽象类&#xff0c;使用abstract声明的成员方法称为抽象方法。抽象方法只有方法声明没有方法体,例如下面的func1就为抽象方法 public abstract class AbstractClassExample {protected int x;private int y;public abstract void func1()…

【Transformer 】 Hugging Face手册 (02/10)

一、说明 启动&#x1f917;并运行变形金刚&#xff01;无论您是开发人员还是日常用户&#xff0c;此快速教程都将帮助您入门&#xff0c;并向您展示如何使用 pipeline&#xff08;&#xff09; 进行推理、使用 AutoClass 加载预训练模型和预处理器&#xff0c;以及使用 PyTorc…

VRRP负载平衡

1.构图 2.实验 2.1如图提示配置pc1-pc4 掩码:255.255.255.0网关均设置为192.168.1(\2).254 2.2配置sw1-sw2 [sw1]port-group 1 //创建接口组&#xff0c;组号是1[sw1-port-group 1]group-member gigabitethernet 0/0/1 to gigabitethernet 0/0/3 //添加组成员&#xff0c;从…

springboot142新冠病毒密接者跟踪系统

新冠病毒密接者跟踪系统设计与实现 摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff…

有源滤波装置在电能质量生物制药行业中的应用

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 摘要&#xff1a;随着电子设备大量的使用&#xff0c;非线性负荷越来越多&#xff0c;企业电力网的谐波污染问题也越来越严重&#xff0c;由于谐波的不良作用恶化电能质量&…

【鸿蒙】大模型对话应用(三):跨Ability跳转页面

Demo介绍 本demo对接阿里云和百度的大模型API&#xff0c;实现一个简单的对话应用。 DecEco Studio版本&#xff1a;DevEco Studio 3.1.1 Release HarmonyOS SDK版本&#xff1a;API9 关键点&#xff1a;ArkTS、ArkUI、UIAbility、网络http请求、列表布局、层叠布局 页面跳…

C#用正则表达式判断字符串是否纯数字vs用Char.IsDigit 方法遍历字符数组是否纯数字

目录 一、使用的方法 1.正则表达式 2.Char.IsDigit 方法 二、源码 1.源代码 2.生成效果 一、使用的方法 1.正则表达式 在程序运行过程中&#xff0c;经常需要用户输入数字信息&#xff0c;如输入员工年龄、工资等。使用正则表达式Regex类的IsMatch方法&#xff0c;可以有…

产业热点 | 从 Vision Pro 发售,洞见空间计算时代新机遇

*图源&#xff1a;Apple 官网 近日首批 Vision Pro 启动预约发售&#xff0c;短短一周就预估售出 20 万台&#xff0c;如今正式发售在即&#xff0c;再度受到各界的热切关注。 *图源&#xff1a;Apple 官网 同样作为空间计算赛道企业&#xff0c;ALVA Systems 在过去十余年始…

2024年美赛数学建模A题思路模型代码

​2024年美赛ABCDEF题思路模型代码论文&#xff1a;开赛后2.2早上第一时间更新&#xff0c;详细内容见文末名片 目录 下面是我对美赛的一些看法&#xff0c;大家可以参考 赛题思路代码模型论文&#xff1a;开赛后第一时间更新&#xff0c;获取见文末名片 总说&#xff08;历年美…

ubuntu20配置mysql8

首先更新软件包索引运行 sudo apt update命令。然后运行 sudo apt install mysql-server安装MySQL服务器。 安装完成后&#xff0c;MySQL服务将作为systemd服务自动启动。你可以运行 sudo systemctl status mysql命令验证MySQL服务器是否正在运行。 连接MySQL 当MySQL安装…

【免费分享】数据可视化-银行动态实时大屏监管系统,含源码

一、动态效果展示 1. 动态实时更新数据效果图 ​ 2. 鼠标右键切换主题 二、确定需求方案 1. 屏幕分辨率 这个案例的分辨率是16:9&#xff0c;最常用的的宽屏比。 根据电脑分辨率屏幕自适应显示&#xff0c;F11全屏查看&#xff1b; 2. 部署方式 B/S方式&#xff1a;支持…

SpringBoot+Redis如何实现用户输入错误密码后限制登录(含源码)

点击下载《SpringBootRedis如何实现用户输入错误密码后限制登录&#xff08;含源码&#xff09;》 1. 引言 在当今的网络环境中&#xff0c;保障用户账户的安全性是非常重要的。为了防止暴力破解和恶意攻击&#xff0c;我们需要在用户尝试登录失败一定次数后限制其登录。这不…

全程云OA未授权访问+SQL注入漏洞复现 [附POC]

文章目录 全程云OA未授权访问+SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现全程云OA未授权访问+SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利…

【开发实践】python使用 moviepy实现mp4转gif(含可视化界面)

一、分析介绍 MoviePy是一个用于视频编辑和处理的Python库。它提供了一种简单而直观的方式来创建、编辑和合成视频&#xff0c;同时也支持添加音频和图像。 以下是MoviePy的一些主要功能和用法示例&#xff1a; 创建视频剪辑&#xff1a; from moviepy.editor import VideoFi…

visual studio 0x800700d8怎么解决

遇到Visual Studio中的0x800700d8错误通常表示在尝试执行某个操作时遇到了问题&#xff0c;这可能是由于系统组件缺失、文件损坏、权限问题或其他系统级错误导致的。下面是一些详细的解决步骤&#xff0c;你可以尝试按照这些步骤来解决问题&#xff1a; 运行Windows更新&#…

如何做好多平台内容营销?媒介盒子分享

随着社交媒体不断多元化&#xff0c;内容营销逐渐发展出了新趋势&#xff0c;那就是跨平台内容营销。互联网平台相对封闭&#xff0c;平台的运营偏好也会吸引不同社区的粉丝聚集&#xff0c;造就其不同的品牌人格&#xff0c;然后用户个体需求极其复杂&#xff0c;兴趣也在不断…

Arcgis10.3安装

所需软件地址 链接&#xff1a;https://pan.baidu.com/s/1aAykUDjkaXjdwFjDvAR83Q?pwdbs2i 提取码&#xff1a;bs2i 1、安装License Manager 点击License Manager.exe&#xff0c;默认下一步。 安装完&#xff0c;点击License Server Administrator&#xff0c;停止服务。…

大数据学习之Redis,十大数据类型的具体应用(四)

3.8 Redis基数统计&#xff08;HyperLogLog&#xff09; 需求 统计某个网站的UV、统计某个文章的UV 什么是UV unique Visitor &#xff0c;独立访客&#xff0c;一般理解为客户端IP 大规模的防止作弊&#xff0c;需要去重复统计独立访客 比如IP同样就认为是同一个客户 需要去…

滑动窗口入门(算法村第十六关青铜挑战)

窗口&#xff1a;窗口其实就是两个变量left和ight之间的元素&#xff0c;也可以理解为一个区间。窗口大小可能固定&#xff0c;也可能变化。滑动&#xff1a;窗口是移动的&#xff0c;事实上移动的仍然是left和ight两个变量&#xff0c;而不是序列中的元素。当变量移动的时&…