刷野打怪上王者·C++篇·第10期·数组、结构体

c++ 小游戏 NO 9 最后主函数 下方有惊喜: int main() { startv:system("cls"); cout<<"欢迎来到hyx游戏中心!\n"; cout<<"1.玩贪吃蛇\n"; cout<<"2.玩狒狒大战\n"; cout<<"3.晃瞎你的狗眼\n"; cout<<"4.玩速算王者\n"; cout<<"5.玩欢乐赌场\n"; cout<<"6.玩忍三\n"; cout<<"7.玩打怪小游戏(死了才 阅读详情

参考链接

RUNOOB.COM

数组

    数组是存储一个固定大小的相同元素的顺序集合,它们在内存中中对应的地址是连续的。下面我们来看一下数组声明:

数据类型 数组变量名[数组大小]  //这是简单的一维数组

   下面我们通过程序来看一下:

#include <iostream>

using namespace std;
int main()
{

	int iArrayVar1[5] = {0, 1, 2,  3, 4}; //初始化一维数组
	int iArrayVar2[2][3] = { 1, 2, 3, 4, 5, 6 }; //初始化二维数组

	cout << "一维数组" << endl;
	for (int iId = 0; iId < 5; iId++)
		cout << iArrayVar1[iId] << "  ";
	cout << endl;

	cout << "二维数组" << endl;
	for (int iId1 = 0; iId1 < 2; iId1++)
	{
		for (int iId2 = 0; iId2 < 3; iId2++)
		{
			cout << iArrayVar2[iId1][iId2] << "  ";
		}
		cout << endl;
	}
	getchar();
}

运行结果

一维数组
0  1  2  3  4
二维数组
1  2  3
4  5  6

注:数组不仅局限在一维数组,可以是多维数组,在程序中就展示了二维数组的声明以及初始化。其它初始化的方式都是一样的,就是要声明多维数组只需要在变量后添加[数组大下]即可。

在这里还要说明一下,数组中经常使用的一个方式,就是数组的变量名代表了数组的首地址。并且数组中内存地址都是连续的,所以我们可以通过访问指向数组首地址的指针通过累加地址方式,就可以访问数组中的数据。

#include <iostream>

using namespace std;
int main()
{

	int iArrayVar1[5] = {0, 1, 2,  3, 4}; //初始化一维数组
	int iArrayVar2[2][3] = { 1, 2, 3, 4, 5, 6 }; //初始化二维数组

	int *iPointVar = iArrayVar1;    //指针指向数组首地址
	cout << "一维数组" << endl;
	for (int iId = 0; iId < 5; iId++)
	{
		cout << *iPointVar << "  ";
		iPointVar++;
	}
	cout << endl;
	getchar();
}

运行结果

一维数组
0  1  2  3  4

注:因为下篇才会讲指针,所以下篇会讲解如果通过指针访问二维数组。

结构体

    结构体可以说是比数组更为灵活的一种数据构造方式,在数组中只能允许数据类型相同的数据进行存储。但是结构可以允许用户自己定义数据类型。结构体的语句:

struct 变量名1{   //此处变量名1为该结构体的名字

数据类型 变量名2;
      .
      .
      .
数据类型 变量名n;
   
}目标名;       //在程序中声明的变量名,来进行数据访问和操作

知道了结构体的语句,下面我们通过实例来说明:


#include <iostream>

using namespace std;

struct Students
{
	char* sName;
	int    iAge;
	float  fArrayScore[10];
};    //声明结构体
int main()
{
	Students stTom = {NULL}; //初始化为空值
	stTom.sName = "Tom";
	stTom.iAge = 13;
	for (int iId = 0; iId < 10; iId++) //对结构体进行赋值操作
	{
		stTom.fArrayScore[iId] = 49;
	}
	/*输出打印相关信息*/
	cout << "打印学生信息" << endl;
	cout << "姓名:" << stTom.sName << endl;
	cout << "年龄:" << stTom.iAge << endl;
	cout << "分数:" << endl;
	for (int iId = 0; iId < 10; iId++)
	{
		cout << stTom.fArrayScore[iId] << "  ";
	}


	getchar();
}

运行结果

打印学生信息
姓名:Tom
年龄:13
分数:
49  49  49  49  49  49  49  49  49  49

注:上述代码是简单的结构体构建及使用的方式,在讲了指针之后,会详细讲解结构体指针的操作方式等。

更多《计算机视觉与图形学》知识,可关注下方公众号:

 

逆向工程入门实战:从BugKu题目解析到工具链与核心思路 逆向工程是网络安全领域的核心技术之一,它通过分析已编译程序的行为与结构,反推其设计逻辑与算法实现。其基本原理类似于在没有图纸的情况下拆解复杂机械,需要综合运用静态分析与动态调试技术来理解程序运行机制。这项技术的核心价值在于能够深入理解软件内部工作原理,广泛应用于恶意软件分析、漏洞挖掘、软件保护与协议破解等场景。在实战中,掌握高效的工具链与分析方法至关重要,例如使用Ghidra进行静态反编译,结合x64dbg进行动态调试,可以快速定位关键校验逻辑。本文以典型的CrackMe题目为例,详细拆解了从信息收集、行为 阅读详情

相关推荐

逆变器方案(工频全套)工频正弦波逆变器开发板全套设计资

逆变器方案(工频全套)工频正弦波逆变器开发板,24V-72V通用12只TO-247封装MOS管,额定输出功率6500W以下;配有触摸屏操作界面,运行数据一目了然,带市电互补UPS功能,可选择电池优先或市电有限工作,我们的开发板均从实战角度出发,让您的学习更便捷,包含全套设计资料,PCB.原理图.源代码,程序均有中文注释,MCU选用美国微芯公的PIC-8位单片机,民用数字电源首选单片机,抗干扰能力强,运行稳定。...

m0_73494033的博客 895

刷野打怪上王者·C++篇·第27期·总结

刷野打怪上王者·C++篇·第26期·时间函数&预处理 刷野打怪上王者·C++篇·第25期·动态内存处理 刷野打怪上王者·C++篇·第24期·信号处理 刷野打怪上王者·C++篇·第23期·标准流输入输出 刷野打怪上王者·C++篇·第22期·多线程处理 刷野打怪上王者·C++篇·第21期·模板处理 刷野打怪上王者·C++篇·第20期·命名空间 刷野打怪上王者·C++篇·第19期·...

CSS360的博客 1617

手把手教你用Verilog实现AT24C64的I2C读写(附完整仿真流程)

本文详细介绍了如何使用Verilog HDL设计AT24C64 EEPROM的I2C控制器,并配合ModelSim完成完整的仿真验证流程。内容涵盖I2C协议解析、Verilog状态机设计、AT24C64读写操作实现,以及仿真波形分析和调试技巧,为FPGA开发者提供了一套完整的EEPROM控制解决方案。

3c4x5z6v7b的博客 847

刷野打怪上王者·C++篇·第7期·数据存储

参考链接 RUNOOB.COM 数据存储类说明 在编程过程需要限制和扩大函数以及变量的作用域(关于作用域上一篇已经提到点),需要一些特定的类来进行修饰。为实现上面的功能,C++定义了存储类。C++程序中使用的存储类:auto,register,static,extern,mutable,thread_local。 但是随着C++版本的更新,从C++17开始,aut...

CSS360的博客 842

STM32 HAL库串口DMA接收不定长数据的两种实战方法:IDLE中断与超时管理详解

本文详细解析了STM32 HAL库中串口DMA接收不定长数据的两种实战方法:IDLE中断与超时管理。通过对比分析两种方案的硬件要求、响应速度和适用场景,为嵌入式开发者提供了高效可靠的串口通信解决方案,特别适用于智能家居、传感器网络等需要处理不定长数据包的应用场景。

weixin_30954265的博客 472

整理并记录几种运算放大器

运算放大器是一种十分常见的电子元器件,最近我在学习运放,以前在学校没有好好的学习,今天在B站看了唐老师讲运算放大器-唐老师讲电赛系列视频教程,记录下所学的,纯当是自己的笔记 学习运放,有两个重要的概念及重要的计算法宝,虚短vp=vn;和虚断ip=in 1反向比例运算电路 Rf可以大于、小于或等于R,起到放大、跟随、衰减输入的作用; 平衡电阻没有太高的精度要求,可加可不加; 有些运放内部集成了补偿电路,就不需要使用平衡电阻,加了反而增大误差,如OPA227 2.同向比例运放电路 .

qq_36823004的博客 6366

刷野打怪上王者·C++篇·第25期·动态内存处理

参考链接 RUNOOB.COM 动态内存处理 为什么会有这么一个概念呢?我们在写程序的时候,有的时候很难提前预知定义的变量需要申请多少内存,只有在程序运行的过程才能够确定。需要说明一点,在C++中内存由两部分组成:栈和堆。其中,函数内声明的所有变量使用栈来存储;对于程序未使用的可用于动态分配的内存则有堆完成。 要进行动态申请内存,C++提供了空间分配new运算符,还提供了...

CSS360的博客 330

inferCNVpy分析流程学习

inferCNV的用途大家都已经很清楚了,接下来就走一下流程,试一试Python版的inferCNV。使用的数据集为:GSE188711,既往推文可见:Scanpy分析全流程(含harmonypy整合/细胞周期矫正/双细胞检测及去除)(

zfyyzhys的博客 1296

刷野打怪上王者·C++篇·第11期·指针&引用

参考链接 RUNOOB.COM 指针 要想成为一名优秀的程序,学会指针是必不可少的技能。合理利用指针在写项目时,很大程度能够提高你程序的执行效率。上来就把指针吹的很牛,我们现在来看怎么使用吧。我们前面讲了,变量名其实对应内存中一块地址,并且每个内存位置都定义了&来访问内存地址。 那么什么是指针呢?其实指针也是一个变量,不过这边变量存储的是内存地址。使用方式: 数据类...

CSS360的博客 284

【OpenClaw从入门到精通】第37篇:教育“龙虾”进化论——从答疑助教到全流程智能教学系统(2026实测版)

2026年,教育AI已从被动答疑的L1级进化至主动教学的L4级,清华开源的OpenMAIC平台更是打破传统慕课局限,实现互动式AI课堂。本文基于天津工业大学、西北农林科技大学等高校的真实应用案例,结合腾讯云、天翼云的实操指南,详解OpenClaw在教育场景的四层进化路径。核心内容包括:L1-L4级教育自动化架构解析、清华OpenMAIC L4级AI课堂深度拆解、从零搭建智能答疑(QQ群机器人)+作业批改+学情分析全流程系统,以及高校网络安全合规部署方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 812

Android 10.0 SystemUI 屏蔽状态栏消息推送弹出的悬浮通知

在状态栏中,有一些通知类似 消息推送 弹出的 悬浮通知,弹出30秒之后会消失掉 要想屏蔽掉这些通知,首选知道这些通知是怎么产生的 通知类型 NotificationContentInflater.java 详细的介绍各种通知的类型 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java /** * The defau

安卓兼职framework和app工程师的博客 1542

刷野打怪上王者·C++篇·第12期·函数&基本数学函数

参考链接 RUNOOB.COM 函数 在程序执行过程中,必须含有主函数main,因为这是程序的入口。但是我们在写工程的工程中,只有一个主函数是不可以的,因为这样代码的可读性就很差。面对这个问题,C++可以在程序中申请多个函数。下面来看一下函数的定义方式: 数据类型 函数名(形式参数) { /*核心函数*/ } 其实函数我们已经在前面程序使用过,下面我们在来看一下: #...

CSS360的博客 257

<IBM AIX> 《HACMP 实用手册和命令 HA切换手册》 - 鸿篇巨制,全网最全

操作命令检查磁盘预留策略要将磁盘预留策略更改为 no_reserve集群状态实用程序查看集群状态是否正常SMIT System Management (C-SPOC)Cluster ServicesShow Cluster Services 面板上的选项或 lssrc 命令查看资源组、资源组对应的VG、资源组对应的APPLICATION SERVER# ./cldispsmit常用命令F3退出F4列表Esc+6或者F6查看命令Esc+7或者F7选择多项检查状态。

Else 的博客 3366

c++ 小游戏 游戏中心1.玩贪吃蛇2.玩狒狒大站3.晃瞎你的狗眼4.玩速算王者5.玩欢乐赌场6.玩忍三7.玩打怪小游

if(j==3) cout

weixin_62886692的博客 540

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C语言从青铜到王者:菜鸟逆袭必备生存指南(2024超全版)

今天咱们要聊的这个东西可不得了——它可是编程界的活化石(敲黑板!)自1972年诞生以来,C语言就像编程界的AK47,简单粗暴又耐用!你手机里的安卓系统、电脑上的Windows内核、甚至你正在看的这篇文章背后的服务器,全都离不开它的身影!(悄悄说:学完C语言再去碰其他语言,就跟玩过魂斗罗再玩超级玛丽一样简单!(亲测有效:坚持100小时编码练习,你就能吊打90%的初学者!(新手劝退器:指针是C语言的灵魂,也是菜鸟的噩梦!(冷知识:数组名本质是指向首元素的指针!(学会调试,你的头发能少掉一半!

binbinaijishu88的博客 938

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

从零到英雄:华为OD机试C卷备考全攻略与实战技巧

本文提供华为OD机试C卷的全面备考指南,涵盖从零基础到高分的实战技巧。重点解析双机位考试流程、高频考点分布及高效刷题方法,帮助考生掌握算法思维与编程基本功。特别推荐Python作为首选语言,并分享动态规划、DFS等核心算法的突破路径,助力考生顺利通过机试。

n8m7b6v5c4的博客 646

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

牛客编程巅峰赛S2第3场

如何用一个数组给一个vector向量赋值?  ①当vector是刚刚创建的时候,可以直接初始化。 int a[5]={1,2,3,4,5}; vector<int> v(a+a+5);  ②当vector已经被创建过的时候,可以使用Insert函数。 int a[5]={1,2,3,4,5}; vector<int> v; v.insert(v.begin(),a,a+5); A题:牛牛打怪   简单模拟。 B 题:简单的公式   可以采用常见的矩阵快速幂的方式,满足f(n)

CUMT_William_Liu的博客 215

C++与SDL2实战:从零构建双人联机塔防游戏架构

游戏开发的核心在于对底层架构的理解与控制,这涉及到游戏循环、内存管理与实时渲染等基础概念。通过剖析游戏引擎的工作原理,开发者能够深入掌握性能优化与系统设计的精髓。在工程实践中,采用C++等底层语言结合SDL2这样的多媒体库,可以构建出高性能、可扩展的游戏框架,尤其适用于需要精细控制网络同步与资源管理的联机游戏场景。本文以双人塔防游戏为具体案例,详细拆解了其实时网络同步与实体组件系统(ECS)的实现,展示了如何将基础技术原理应用于解决游戏开发中的实际问题,如状态同步、碰撞检测优化与资源管理,为开发高质量联机游

weixin_30755393的博客 380

游戏代码 (可复制)

if(j==3) cout<<"你使用了太极神功(盗版)"<<endl<<"========================================="<<endl<<"lose!if(j==4) cout<<"你变身成了盖亚"<<endl<<"========================================="<<endl<<"lose!cout<<"选择狒狒"<<endl<<"=========================================="<<endl;

songhuaizhi的博客 1万+

游戏开发Java岗笔试全解析:从集合并发到服务器架构

Java集合框架是游戏服务器开发的基础,HashMap与ConcurrentHashMap的选型、扩容机制,直接关系到在线玩家数据读写性能。并发编程与JVM内存管理则是游戏后端高并发、低延迟的保障,理解锁、线程池、GC机制是排查线上OOM的关键。Netty作为高性能网络框架,通过Reactor模型与ByteBuf解决TCP粘包拆包、内存泄漏问题,是长连接游戏服务器的核心组件。从MySQL/Redis缓存到排行榜ZSet,再到A*寻路算法与设计模式,游戏Java岗笔试覆盖了后端开发全链路。本文以搜狐畅游校招补

weixin_30647065的博客 314

刷野打怪上王者·C++篇·第23期·标准流输入输出

参考链接 RUNOOB.COM 标准流输入输出 输入流:字节流从设备(键盘、磁盘驱动器、网络连接)流向内存。输出流:从内存流向设备(显示屏、打印机、磁盘驱动器)。这里主要说明<iostream>中的cin(标准输入流)、cout(标准输出流)、cerr(非缓冲标准错误流)、clog(缓冲标准错误流)对象。 实例程序 #include <iostream>...

CSS360的博客 406

刷野打怪上王者·C++篇·第13期·类&对象

参考链接 RUNOOB.COM 类 这个其实在前面讲的时候,就已经涉及过类的使用,现在使用文字描述一下。C语言是面向过程的编程,C++是面向对象的过程。类说白了就是用户定义的类型,类中的数据和方法(可以理解为一个个函数)称为类的成员。下面说一下类的使用,类的定义是以class关键字开头,主体是花括号的内容,下面来说明一下: class 类型 { public: ...

CSS360的博客 392

刷野打怪上王者·C++篇·第1期·简介

参考链接 RUNOOB.COM 好记性不如烂笔头 历史 要看历史我认为还是要去百度百科看比较详细(链接),但要简单来说的话,1979年Bjame Sgoustrup在Bell实验室设计开发的,在1983年更名为C++。其中对C++发展很重要的一件事,就是Alexander stepanov创建了标准模板库(Standard Template Library,STL),并加入到C+...

CSS360的博客 384

刷野打怪上王者·C++篇·第15期·重载操作

参考链接 RUNOOB.COM 重载操作 重载操作分为重载运算和重载函数。 重载函数 在同一个作用域内,可以声明几个功能类似的同名函数,但是这些形式参数(参数个数、数据类型或者顺序)不同。不能通过返回类型来重载函数。 #include <iostream> using namespace std; class dataDisposeClass { pu...

CSS360的博客 376

刷野打怪上王者·C++篇·第22期·多线程处理

参考链接 RUNOOB.COM 多线程处理 在电脑中可以进行多任务处理,其中多任务的处理方式分为两种:多进程和多线程。多进程是程序的并发执行;多线程是同一程序判断并发执行。 实例程序 #include <iostream> #include <utility> #include <thread> #include <chrono>...

CSS360的博客 364

刷野打怪上王者·C++篇·第6期·变量&常量

参考链接 RUNOOB.COM 变量 其实变量就是一个名字,代指的可操作存储区的名称。也不是随便起个名字就可以,在C++中变量的名称由字母、数字和下划线组成。但必须以字母或下划线开头,并且区分字母的大小写。 估计大家对上一节讨论的字符数不是很清楚,一个字符对应8位(每位对应的就是0或者1)。我们拿一个特殊的类型来进行说明,float类型1位符号、8位指数、23位小数,下面拿...

CSS360的博客 359
上一篇: 刷野打怪上王者·C++篇·第9期·判断&循环
下一篇: 刷野打怪上王者·C++篇·第11期·指针&引用
元宇宙MetaAI
博客等级 码龄10年 331粉丝 333原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值