本篇介绍C++函数,主要介绍函数的定义、函数形参传递方式以及匿名函数。
/*
* Author:W;
* 函数
* 1.定义声明
* 2.函数参数3种传递方式:值、引用以及指针
* 3.匿名函数Lamda表达式
*/
//引入头文件:头文件包含了程序中必需的或有用的信息
#include <iostream>
using namespace std;
//函数声明
void methodByValue(int v);
void methodByPointer(int* p);
void methodByReference(int& ref);
//main程序执行入口函数
int main()
{
//函数的形式参数传递方式列举
int p = 5;
cout << "===函数形式参数传递===" << endl;
cout << "P="<< p << endl;
methodByValue(p);
cout << "P=" << p << endl;
methodByPointer(&p);
cout << "P=" << p << endl;
methodByReference(p);
cout << "P=" << p << endl;
//匿名函数:[capture](parameters)->return-type{body}
//C++变量传递有传值和传引用的区别。可以通过前面的[]来指定
//[] // 沒有定义任何变量。使用未定义变量会引发错误。
//[x, &y] // x以传值方式传入(默认),y以引用方式传入。
//[&] // 任何被使用到的外部变量都隐式地以引用方式加以引用。
//[=] // 任何被使用到的外部变量都隐式地以传值方式加以引用。
//[&, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用。
//[=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。
cout << "===匿名函数===" << endl;
auto maxFun = [=](int a, int b)->int { if (a > b){return a;} else{ return b;} };
int c = maxFun(2,5);
cout << "C = " << c << endl;
}
//通过值传递参数
void methodByValue(int v)
{
cout << " =methodByValue= "<< endl;
v = 10;
}
//通过指针传递参数
void methodByPointer(int* p)
{
cout << " =methodByPointer= " << endl;
*p = 9;
}
//通过引用传递参数
void methodByReference(int& ref)
{
cout << " =methodByReference= " << endl;
ref = 12;
}
运行结果如下: