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

参考链接

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++处理数学相关的函数

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值