函数

基本概念

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*返回类型 函数名(参数列表){
函数体;
}
*/
//定义函数
long long power(int x, int n){
long long res = 1;
while(n--){
res *= x;
}
return res;
}
//调用函数
power(2, 3);
  • 返回类型

    返回类型代表函数运算后返回的结果类型

  • 函数名

    函数的标识符

  • 参数列表

    调用函数时需要的数据以及类型

  • 函数体

    在函数内部通过传入的数据来得出结果的计算过程

在调用函数时输入的参数称为实际参数(即实参),函数定义时的参数成为形式参数(即形参)

关键字==return==作用:

  • 返回值
  • 结束函数

函数类型为void时没有返回值,代表空,正常执行时不需要return

参数的引用

1
2
3
4
5
6
void swap(int &x, int &y){
int temp = x;
x = y;
y = temp;
}
swap(a, b);

若不加&符号,不会对实参进行改变.因此只有加上引用符号后才能对传递进来的实参进行修改

特殊类型

对于vector,string这类复合数据类型,如果按数值来传递,相当于新建了一个同样大小的数据,同时将形参的数据赋值给函数的形参,性能低效

因此尽可能用引用来传递非基础类型(因为指向同一个内存并不会发生数据的拷贝)

同样如果传递数组不带引用符号的话,数组会发生隐式转换变成指针类型

(typeid函数可获取数据类型)

1
2
3
4
void forward(auto &arr);//使用auto是比较危险的行为但可做题小范围使用
void forward(int (&arr)[3]); //要声明具体长度
template<size_t N>//模板,C++高级特性
void forward(int (&arr)[N]);

main函数