struct的精确用法

目录

我终于回来啦!

1,可以创造根据结构体格式的成员或数组。

普通成员

 数组成员

2,可以用指针遍历成员

3,使用typedef

---------------------------------------------------------------------------------------------------------------------------------

今天我整理了一些struct的用法,但我先说一声:

我终于回来啦!

前几天一直没空,因为今天有空,所以今天更新一下。那么首先第一个用法是:

1,可以创造根据结构体格式的成员或数组。

普通成员

我们先看下列例子:

#include <stdio.h>
#include<iostream>
struct student
{char name[20];int age;char sex[7];int score;
};student stu1 = {"Wang.x.m",12,"boy",90};
int main(){std::cout<<stu1.name<<" "<<stu1.age<<" "<<stu1.sex<<" "<<stu1.score;
}

这个代码很简单,首先创造一个经典结构体struct,然后在结构体里创建了变量name,age,sex和,score,之后创建一个结构体成员,最后打印。

运行结果:

 数组成员

但是如果成员有10个,那么根据前面的就只能这么写:

#include <stdio.h>
#include <iostream>
struct student
{char name[20];int age;char sex[7];int score;
};
int main()
{student stu1 = {"Wang.x.m", 12, "boy", 90};student stu2 = {"Li.y.n", 13, "girl", 85};student stu3 = {"Zhang.z.o", 11, "boy", 92};student stu4 = {"Chen.a.p", 14, "boy", 88};student stu5 = {"Liu.b.q", 12, "girl", 91};student stu6 = {"Sun.c.r", 13, "boy", 87};student stu7 = {"Zhao.d.s", 11, "girl", 93};student stu8 = {"Wu.e.t", 14, "boy", 86};student stu9 = {"Zhou.f.u", 12, "girl", 94};student stu10 = {"Qian.g.v", 13, "boy", 89};std::cout << stu1.name << " " << stu1.age << " " << stu1.sex << " " << stu1.score << std::endl;std::cout << stu2.name << " " << stu2.age << " " << stu2.sex << " " << stu2.score << std::endl;std::cout << stu3.name << " " << stu3.age << " " << stu3.sex << " " << stu3.score << std::endl;std::cout << stu4.name << " " << stu4.age << " " << stu4.sex << " " << stu4.score << std::endl;std::cout << stu5.name << " " << stu5.age << " " << stu5.sex << " " << stu5.score << std::endl;std::cout << stu6.name << " " << stu6.age << " " << stu6.sex << " " << stu6.score << std::endl;std::cout << stu7.name << " " << stu7.age << " " << stu7.sex << " " << stu7.score << std::endl;std::cout << stu8.name << " " << stu8.age << " " << stu8.sex << " " << stu8.score << std::endl;std::cout << stu9.name << " " << stu9.age << " " << stu9.sex << " " << stu9.score << std::endl;std::cout << stu10.name << " " << stu10.age << " " << stu10.sex << " " << stu10.score << std::endl;return 0;
}

这种代码十分不整洁,既不好看还效率低,这时候我们可以运用数组:

#include <stdio.h>
#include <iostream>
struct student
{char name[20];int age;char sex[7];int score;
};
int main()
{student students[10] = {{"Wang.x.m", 12, "boy", 90},{"Li.y.n", 13, "girl", 85},{"Zhang.z.o", 11, "boy", 92},{"Chen.a.p", 14, "boy", 88},{"Liu.b.q", 12, "girl", 91},{"Sun.c.r", 13, "boy", 87},{"Zhao.d.s", 11, "girl", 93},{"Wu.e.t", 14, "boy", 86},{"Zhou.f.u", 12, "girl", 94},{"Qian.g.v", 13, "boy", 89}};for (int i = 0; i < 10; i++){std::cout << students[i].name << " " << students[i].age << " " << students[i].sex << " " << students[i].score << std::endl;}return 0;
}

这样就比上一个少了900多个字符。

2,可以用指针遍历成员

但是这样需要0.58秒才能运行,很容易让我们等死,如果你想让运行得快一点,那么可以运用指针:

#include <stdio.h>
#include <iostream>
struct student
{char name[20];int age;char sex[7];int score;
};
int main()
{student students[10] = {{"Wang.x.m", 12, "boy", 90},{"Li.y.n", 13, "girl", 85},{"Zhang.z.o", 11, "boy", 92},{"Chen.a.p", 14, "boy", 88},{"Liu.b.q", 12, "girl", 91},{"Sun.c.r", 13, "boy", 87},{"Zhao.d.s", 11, "girl", 93},{"Wu.e.t", 14, "boy", 86},{"Zhou.f.u", 12, "girl", 94},{"Qian.g.v", 13, "boy", 89}};student* ptr = students;for (int i = 0; i < 10; i++){std::cout << ptr->name << ptr->age << ptr->sex << ptr->score;ptr++;}return 0;
}

3,使用typedef

但这样比之前也快了0.05秒。有没有更快的方法呢?有,使用typedef关键词,比如这样:

#include <stdio.h>
struct student
{char name[20];int age;char sex[7];int score;
};
typedef student Stu;
int main()
{Stu students[10] = {{"Wang.x.m", 12, "boy", 90},{"Li.y.n", 13, "girl", 85},{"Zhang.z.o", 11, "boy", 92},{"Chen.a.p", 14, "boy", 88},{"Liu.b.q", 12, "girl", 91},{"Sun.c.r", 13, "boy", 87},{"Zhao.d.s", 11, "girl", 93},{"Wu.e.t", 14, "boy", 86},{"Zhou.f.u", 12, "girl", 94},{"Qian.g.v", 13, "boy", 89}};Stu* ptr = students;for (int i = 0; i < 10; i++){printf("%s %d %s %d\n", ptr->name, ptr->age, ptr->sex, ptr->score);ptr++;}return 0;
}

这样写可以直接把运行速度飙升到:

4.格式环节

结构体创造:

struct 结构体名{格式1格式2格式3...格式n
};

成员创造:

普通成员:
struct 结构体名 结构体成员名 = {结构体变量1,结构体变量2,结构体变量3・・・结构体变量n};
数组成员:
struct 结构体名 结构体成员[n]={{结构体变量1.1,结构体变量1.2,结构体变量1.3···结构体成员1.n},{结构体变量2.1,结构体变量2.2,结构体变量2.3···结构体成员2.n},{结构体变量3.1,结构体变量3.2,结构体变量3.3···结构体成员3.n},...{结构体变量n.1,结构体变量n.2,结构体变量n.3···结构体成员n.n}};

5.出题环节 

最后该大家出点题:

【1,输出平均数】

请使用struct计算输入的n个平均数。

样例

输入:

5

6.7 8.2 1.3 2.9 7.9

输出:

20.68

【2, 输出总成绩】

请使用 struct 计算输入的 n 个学生成绩的总成绩。

样例:

输入:

3

85 90 88

输出:

263

【3, 输出最高分】

请使用 struct 找出输入的 n 个学生成绩中的最高分。

样例:

输入:

4

78 89 92 84

输出:

92

如果有什么没讲的话,我会尽快更新《sturct的用法第2期》

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

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

相关文章

代码随想录Day 52|题目:101.孤岛的面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 图论part03题目一&#xff1a;101.孤岛的总面积解题思路DFS**BFS** 题目二&#xff1a;102. 沉没孤岛解题思路 题目三&#xff1a;103. 水流问题解题思路优化 题目四&#xff1a;104.建造最大岛屿…

[Linux]用户管理指令

开机/重启/登录/注销 进入xhsell 或者虚拟系统中, 右键桌面打开终端, 在终端执行命令, 重启或关机linux系统 建议使用普通账号登录, 如果权限不够时, 使用 su - 用户名 命令切换到超管, 然后再使用 logout命令退回到普通账号, logout 不能在图形界面的终端中使用 用户管理 Li…

Centos7.9 使用 Kubeadm 自动化部署 K8S 集群(一个脚本)

文章目录 一、环境准备1、硬件准备&#xff08;虚拟主机&#xff09;2、操作系统版本3、硬件配置4、网络 二、注意点1、主机命名格式2、网络插件 flannel 镜像拉取2.1、主机生成公私钥2.2、为啥有 Github 还用 Gitee2.3、将主机公钥添加到 Gitee2.3.1、复制主机上的公钥2.3.2、…

最佳植树距离 - 华为OD统一考试(E卷)

2024华为OD机试&#xff08;C卷D卷E卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 按照环保公司要求&#xff0c;小明需要在沙化严重的地区进行植树防沙工作&#xff0c;初步目标是种植一条直线的树带。由于有些区域目前不适合种植树木&#xff0c;所以只能在…

电脑提示找不到msvcp110.dll怎么办?全方面详细解答

msvcp110.dll 是 Microsoft Visual C 2012 Redistributable Package 中的一个动态链接库文件。它是运行使用 Visual C 2012 开发的应用程序所必需的&#xff0c;包含了许多 C 标准库函数的实现。这些函数主要用于支持字符串处理、内存管理、输入输出流、异常处理等功能。 1.ms…

Clion使用vcpkg管理C/C++包

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Clion安装vcpkg二、使用步骤1.切换到清单模式2.开始安装包 三、测试代码总结 前言 Linux上的库基本都可以通过apt或yum等包管理工具来在线安装包&#xff…

C语言深入理解指针(四)

目录 字符指针变量数组指针变量数组指针变量是什么数组指针变量怎么初始化 二维数组传参的本质函数指针变量函数指针变量的创建函数指针变量的使用代码typedef关键字 函数指针数组转移表 字符指针变量 字符指针在之前我们有提到过&#xff0c;&#xff08;字符&#xff09;&am…

NLP 文本分类核心问题

解决思路 分解为多个独立二分类任务将多标签分类转化为多分类问题更换 loss 直接由模型进行多标签分类 数据稀疏问题 标注更多数据&#xff0c;核心解决方案&#xff1a; 自己构造训练样本 数据增强&#xff0c;如使用 chatGPT 来构造数据更换模型 减少数据需求增加规则弥补…

MELON的难题- 华为OD统一考试(E卷)

2024华为OD机试&#xff08;C卷D卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 MELON 有一堆精美的雨花石&#xff08;数量为 n&#xff0c;重量各异&#xff09;&#xff0c;准备送给 S和 W&#xff0c;MELON 希望送给俩人的雨花石重量是一致的。请你设计一…

爬虫 ----hook

目录 定义&#xff1a; 了解什么是hook? 举例 hook XHR请求 XMLHttpRequest 案例地址&#xff1a; Interceptors-拦截器 HOOK cookie操作 cookie 示范 常见的hook代码总结 1.Hook Cookie 2.Hook Header 3.Hook URL 4.Hook JSON.stringify 5.Hook JSON.parse 6.Ho…

Mac使用gradle编译springboot-2.7.x源码

1 开发环境&#xff1a; JDK8 ideaIU-2024.2.2 gradle-7.6.3 代理网络 2 下载springboot源码 代码仓库网址 git clone -b 2.7.x https://github.com/spring-projects/spring-boot.git3 安装gradle gradle下载网址 https://services.gradle.org/distributions/ 安装此文件指…

C语言 | Leetcode C语言题解之第415题字符串相加

题目&#xff1a; 题解&#xff1a; char* addStrings(char* num1, char* num2) {int i strlen(num1) - 1, j strlen(num2) - 1, add 0;char* ans (char*)malloc(sizeof(char) * (fmax(i, j) 3));int len 0;while (i > 0 || j > 0 || add ! 0) {int x i > 0 ?…

lsof可以查看当前系统中正在被使用的文件,包括动态库

lsof的英文是 list open files lsof直接回车&#xff0c;会显示很多&#xff0c;可以配合more命令查看 lsof | more -10 sudo lsof | more -20 lsof查看正在使用某个动态库的进程 lsof /lib/x86_64-linux-gnu/libc.so.6 lsof /usr/lib/x86_64-linux-gnu/libc.so.6 l…

如何优化苹果CMS 泛目录的缓存管理?

在使用苹果CMS进行内容管理时&#xff0c;缓存管理是提升网站性能的重要环节。随着技术的不断发展&#xff0c;泛目录插件的缓存机制也逐渐变得不再必要。&#xff08;maccmscn&#xff09;本文将探讨如何在不使用缓存的情况下&#xff0c;优化苹果CMS泛目录的性能&#xff0c;…

(学习记录)使用 STM32CubeMX——配置时钟(入门)

使用STM32CubeMX配置STM32F103C8T6时钟部分 选择芯片 ①&#xff1a;选择MCU型号 ①&#xff1a;这里使用英文输入法&#xff0c;输入你想要的芯片型号&#xff0c;我这里采用STM32F103C8T6 ②&#xff1a;这里能看到搜索后出来的芯片具体型号&#xff0c;选择匹配度最高的一个…

MySQL-排名函数ROW_NUMBER(),RANK(),DENSE_RANK()函数的异同

MySQL-排名函数ROW_NUMBER()&#xff0c;RANK()&#xff0c;DENSE_RANK()函数的异同 前言 假设有如下表结构与数据&#xff0c;class_id表示班级&#xff0c;需求&#xff1a;现在要按照班级分组&#xff0c;每个班级的学生进行年龄从小到大排序 一、ROW_NUMBER()函数 ROW_NUM…

Linux中的调度算法

nice值的范围有限&#xff0c;即为[-20, 19]&#xff0c;也就是40个数字&#xff0c;优先级为[60, 99]即一共40个优先级 目前谈论的Linux操作系统叫做分时操作系统&#xff0c;调度的时候主要强调公平&#xff0c;还有一种是实时操作系统&#xff0c;比如智能汽车里面必须装有这…

【面经】查找中常见的树数据结构

查找中常见的树数据结构 一、二叉排序&#xff08;搜索、查找&#xff09;树&#xff08;BST&#xff0c;Binary Search Tree&#xff09;&#xff08;1&#xff09;二叉排序树的查找、插入和删除过程&#xff08;2&#xff09;叉树排序树的缺陷&#xff08;3&#xff09;二叉排…

Spark原理及调优

spark官档 hints&#xff1a;https://spark.apache.org/docs/3.0.0/sql-ref-syntax-qry-select-hints.html调优参数&#xff1a;https://spark.apache.org/docs/latest/sql-performance-tuning.html#join-strategy-hints-for-sql-queries作者几乎把所有的RDD API查了个遍&…

【服务器入门】Linux系统基础知识

【服务器入门】Linux系统基础知识 远程登录与文件传输基础命令与文本编辑vi/vim使用shell脚本基本命令1、目录操作2、文件创建与删改3、文件连接与查看 参考 目前超算使用的系统以Linux系统为主&#xff0c;肯定需要了解一些相关知识。本博客就以本人运行WRF模型所需&#xff0…