函数的形参还有引用传参这一种形式。
引用:是变量的一个别名,它是某个已存在变量的另一个名字。
引用创建后,不可更改(更改指向到其它内存区域)
因不可更改,所以引用必须初始化
因必须初始化,所以引用不可为空(不可修改)
场景:用于函数形参的声明(引用传参)和返回值使用
引用传参
除了值传递和地址传递以外,函数也可以使用引用传递的形式传参,同时引用传参也是最为常见的传参方式。
定义形参,使用&表示传递引用对象
void switch_num(int &a, int &b)
{ int tmp;
tmp = a;
a = b;
b = tmp;
}
代码举例:
#include "iostream"
using namespace std;
/*
* 引用传参:
* void func(int &a, int &b);
*/
void switch_num1(int a, int b) // 值传递不可改变值
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
void switch_num2(int * a, int * b) // 地址传递可改变值
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void switch_num3(int &a, int &b) //引用传递可改变值,&表示引用符
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
int main()
{
int x = 1;
int y = 2;
switch_num3(x, y);
cout << "x=" << x << endl;
cout << "y=" << y << endl;
return 0;
}
函数的三种传参模式对比
返回指针的函数及局部变量的生命周期
函数的返回值可以是一个指针(内存地址),语法如下:
在返回指针时,在函数声明是加入*即可,但是由于函数会自动释放内存,所以会导致函数结果没办法输出。
局部变量: 在函数内创建的变量,作用域(生命周期)只在函数内 函数执行完毕后变量以及其内存空间都会回收(静态内存管理机制)
可以使用动态内存管理(new和delete)规避局部变量
切莫忘记自行delete回收空间
也可以使用static关键字规避变量的销毁
static关键字
static是C++的关键字,在众多编程语言中都有static的应用。
static表示静态,可以修饰:变量和函数。
当static修饰变量,比如函数内的局部变量,可以延长其生命周期到整个程序运行周期。
int * add(int a, int b)
{
static int sum;
sum = a + b;
return ∑
}
函数返回数组
在使用new新建的时候,一定要记得delete