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

用C++语言写游戏——打怪小游戏 想玩游戏吗? 就到某位神犇这来吧! 这会告诉你很多游戏写法! 今天,神犇就开始书写第二期——打怪小游戏!!! 很容易,只需要用脑袋想想即可,READY——GO! 我也希望大家多多捧场哦~~~ 阅读详情

参考链接

RUNOOB.COM

函数

   在程序执行过程中,必须含有主函数main,因为这是程序的入口。但是我们在写工程的工程中,只有一个主函数是不可以的,因为这样代码的可读性就很差。面对这个问题,C++可以在程序中申请多个函数。下面来看一下函数的定义方式:

数据类型 函数名(形式参数)
{
    /*核心函数*/
}

其实函数我们已经在前面程序使用过,下面我们在来看一下:

#include <iostream>

using namespace std;
//声明函数
int changeArrayFun1(int *iTmpAddr, int size); //函数必须在主函数声明后在使用

int main()
{

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

	changeArrayFun1(iArrayVar1, 5);

	int *iPointVar = iArrayVar1;
	for (int iId = 0; iId < 5; iId++)
	{
		cout << *iPointVar << "  ";
		iPointVar++;
	}
	
	getchar();
}
int changeArrayFun1(int *iTmpAddr, int size) //创建函数
{
	for (int iId = 0; iId < size; iId++)
	{
		*iTmpAddr =1;
		iTmpAddr++;
	}
	return 1;
}

运行结果

1  1  1  1  1

注:int changeArrayFun1(int *iTmpAddr, int size)就是创建的函数,我们在使用子函数的时候,要么在main函数前创建,要么在main函数前进行声明。

上面是我们使用非常多的函数定义方式,C++11还提供了匿名函数的支持:Lambda 函数。Lambda把函数当做对象,来进行赋值变量、函数传值、求值操作。我们来看下Lambda函数语法:

//当存在返回类型时
[函数对象参数](传入参数)->返回类型{/*函数体*/}
//当无返回类型时
[函数对象参数](传入参数){/*函数体*/}

代码进行实例分析:


#include <iostream>

using namespace std;

int main()
{
	int iVar1 = 3;
	auto lambdaFunc1 = [](int x) { return x; }; //声明lambda表达式
	auto lambdaFunc2 = [&iVar1](int x) { iVar1 = x + 1;}; //声明lambda表达式
	
	cout << lambdaFunc1(iVar1) << endl;
	
	lambdaFunc2(iVar1);
	cout << iVar1 << endl;

	getchar();
}

运行结果

3
4

注:在上面程序我们看到第二个lambda表达式的创建,引用了外部变量。所以在这里要聊聊如何引用外部变量。在lambda中这些引用的外部变量称为一个闭包,他们主要是通过[]来进行控制。

[]      // 沒有定义任何变量。使用未定义变量会引发错误。
[x, &y] // x以传值方式传入(默认),y以引用方式传入。
[&]     // 任何被使用到的外部变量都隐式地以引用方式加以引用。
[=]     // 任何被使用到的外部变量都隐式地以传值方式加以引用。
[&, x]  // x显式地以传值方式加以引用。其余变量以引用方式加以引用。
[=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。

注:lambda函数也可以直接使用this指针,它的使用方式:

[this](){this->函数处理部分;}();

基本数学函数

    这里其实说的是<cmath>标准函数里面被别人已经写好的基本数学实现函数,我们每个人想玩的话都可以自己写。因为这个只是一个调用函数的事情,所以这里我直接给出别人的一个链接,自己用的时候查看一下就可以。

     c++处理数学相关的函数

 

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

 

从零开始STM32cubeide学习 使用的是正点原子的精英版,单片机是STM32F103ZET6,详细讲解完成跑马灯实验 阅读详情

相关推荐

AD服务器搭建

一、角色安装1)打开服务器管理器,添加 角色和功能;2) 点 下一步;3)点 下一步;4)点 下一步;5)点击安装;6-1)将此服务器提升为域控制器;6-2)点下一步;6)输入密码 点 下一步;7)自动生成LIXF,点击下一步;8)确认目录,点下一步;8)确认安装条件,点安装; 8)安装成功,点关闭;...

潇峰的博客 6454

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

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

CSS360的博客 1617

手把手教你用BQ Studio给BQ40Z50电量计“做体检”:从Golden Learning到精度验证的全流程实操

本文详细介绍了如何使用BQ Studio对BQ40Z50电量计进行全流程调试,从Golden Learning到精度验证。通过硬件连接、参数配置和优化技巧,帮助工程师提升电池管理系统的精度和性能,适用于BMS开发和电量计校准的实际应用场景。

weixin_30824599的博客 452

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

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

CSS360的博客 392

为什么需要知识图谱?什么是知识图谱?——KG的前世今生

我的知乎专栏,对知识图谱感兴趣的朋友可以关注。标题的命名顺序可能让有的读者不太习惯。通常在介绍一个陌生事物的应用前,我们先给出其定义。之所以换个顺序,是为了不让读者一开始就接触比较冰冷生硬的概念刻板描述(后面我尽量用更具体、准确的例子来表达),另一方面也是为了通过现实生活中的例子自然的引入知识图谱的概念。希望通过这种方式加深读者的印象和理解。为了减轻读者理解的负担,我尽可能地避免引入过多的概念和技术

SimmerChan的专栏 8万+

【HAL库-STM】智能温控按键小风扇【胎教级教学】

硬件设备:DHT11,0.96寸oled屏,二/三/四线风扇(不挑),面包板 、f10的精英板等等。当人在的风扇面前时可以自行控制风扇,不在面前时又想开风扇就让他温控自行开启,(在这里有一个想法就是加上蓝牙和wifi控制的功能能够远程遥控,这个如果做的再全一点就要自主研发是一个多功能app,这里没有做。针对这个dht11,我一开始是卡在了这个check函数里面,一直是我给完dht11低电平和高电平后,dht11不回复我低电平和高电平,这个不是我的问题,当时代码是没毛病的,这个点一直卡着我。吐血五天实现小成品

weixin_52451652的博客 1741

刷野打怪上王者·C++篇·第3期·HelloWorld

参考链接 RUNOOB.COM 好记性不如烂笔头 示例代码 我们还是先上HelloWorld代码,然后在慢慢细聊一下: #include &lt;iostream&gt; using namespace std; int main() { cout &lt;&lt; "Hello, world!" &lt;&lt; endl; return 0; } 结果:...

CSS360的博客 336

Bochs源码分析 - 4: 使用ida来调试bochs

前言 bochs内部提供了一个调试器,但是这个命令行调试器相当难用,想找一个gui的debugger。第一次是在百度百科的bochs词条中介绍的peter-bochs-debugger调试器(java编写),但是后来发现ida也有一个bochs调试器,因为对ida比较熟悉,就选用此作为bochs调试器。 在配置过程中参考博客 https://blog.youkuaiyun.com/cssxn/article/details/90738498 中的配置,但是这是直接发布版本,拿源码编译...

WriteAnything_的博客 2758

刷野打怪上王者·C++篇·第26期·时间函数&预处理

参考链接 RUNOOB.COM 时间函数&amp;预处理

CSS360的博客 313

使用PostgreSQL构建高可用数据库集群

在现代企业级应用中,数据库的高可用性已成为业务连续性的核心要求。PostgreSQL作为一款功能强大的开源关系型数据库,其高可用架构的设计直接影响着系统的稳定性和可靠性。

九天的专栏 1261

Xiaojie雷达之路---手把手教你从串口获取雷达原始数据(一)---新建工程(开始)

Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章---利用串口获取毫米波雷达中的原始数据,本系列文章将从新建工程到最后原始数据显示到PC上进行逐步介绍,这个系列的文章大约是一个4-5篇左右。本篇文章呢,主要讲的是如何新建一个毫米波雷达的工程。

XiaoJie的博客 5811

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

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

CSS360的博客 842

【WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

AI人人懂 594

刷野打怪上王者·C++篇·第16期·多态处理

参考链接 RUNOOB.COM 多态处理 我们在前面已经讲过继承的定义,但是当我们遇到继承类和基类中的方法相同时,程序该如何运行呢?这时,就需要引入C++中多态操作。多态调用时,会根据函数对象类型执行不同函数: #include &lt;iostream&gt; using namespace std; /*几何的基本信息类*/ class cubeInfoClass { p...

CSS360的博客 300

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

CSS360的博客 359

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

刷野打怪上王者·C++篇·第9期·判断&循环

参考链接 RUNOOB.COM 判断 在判断语句中主要有两种:if...else和switch两个语句。下面我们还是主要通过代码来说明: 先看一看看if...else语句: #include &lt;iostream&gt; using namespace std; int main() { float iVar1 = 1, iVar2 = 2; if(iVar1 &gt; ...

CSS360的博客 298

WINCC7.3破解文件

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

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

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

CSS360的博客 284

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

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

CSS360的博客 376

刷野打怪上王者·C++篇·第8期·运算操作

参考链接 RUNOOB.COM 运算操作 上几篇已经讲了C++中变量和数据存储,后面我们将讲对里面的数据进行操作需要C++提供了哪些运算符。C++中常见的运算符:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、杂项运算符。 算术运算符:包括+(加)、-(减)、*(乘)、/(除)、++(自加)、--(自减)。下面我们通过程序来进行说明: #include &lt;ios...

CSS360的博客 319

刷野打怪上王者·C++篇·第18期·抽象类处理

参考链接 RUNOOB.COM 抽象类处理 如果类中至少一个函数声明为纯虚函数(关于纯虚函数已经在上面介绍过),则这个类就是抽象类。其中,抽象类目的主要是为了给其他类提供一个可以继承适当的基。并且,抽象类不能用来实例对象,只能作为接口使用,否则编译会出错。 #include &lt;iostream&gt; using namespace std; /*几何的基本信息类*...

CSS360的博客 268

刷野打怪上王者·C++篇·第24期·信号处理

参考链接 RUNOOB.COM 信号处理 信号是由操作系统传递给进程的中断,提前结束程序。

CSS360的博客 276

刷野打怪上王者·C++篇·第19期·异常处理

参考链接 RUNOOB.COM 异常处理 当我们在写项目代码的时候,并不是一写即成的状态,而是要反复多次测试才能使程序出错率降到最低。因此,在程序测试过程中,需要将可能出现的异常进行监视,并在出错的时候返回异常信号、内存释放等。 在C++的异常处理中主要有三个关键字:try、catch、throw。try:可能出现要出现异常的代码块;catch:捕获异常信号;throw:异...

CSS360的博客 305

刷野打怪上王者·C++篇·第5期·数据类型

参考链接 RUNOOB.COM 数据类型说明 我们思考一下,为什么会 出现数据类型。个人理解,首先作为一个好的程序员,就必须在实现特定功能的前提下,要保证较小的时间复杂度和空间复杂度。要做实现上面说的,当然最牛的就是算法。其实算法就是解决问题的一种方法,不过就是这个方法更高效。但要玩算法,最基本就是要合理申请数据空间。 上面知道了为什么,下面我们开始聊实际的。在C++的数据...

CSS360的博客 319

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

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

CSS360的博客 364

刷野打怪上王者·C++篇·第21期·模板处理

参考链接 RUNOOB.COM 模板处理 函数模板不是一个实在的函数,编译器不能为其生成可执行代码。定义函数模板后只是一个对函数功能框架的描述,当它具体执行时,将根据传递的实际参数决定其功能。模板分为函数模板和类模板。 函数模板的定义方式 template &lt;class type1, class type2, ...&gt; 返回类型 函数名(参数列表) { /*核...

CSS360的博客 318

刷野打怪上王者·C++篇·第2期·环境配置

参考链接 百度百科 C++环境设置MAC安装XCode、Command Line Tools 好记性不如烂笔头 C++开发环境 还是先说一个什么是集成开发环境(IDE):集成开发环境(IDE),功能齐全,调试功能很强,程序编好后,可以立刻在环境中调试以获得初步测试结果,然后,可以方便地做成beta版形式,拿到实际环境中进一步测试,最后做成软件发行版。 知道了概念就...

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值