10函数
题单介绍
本次习题尽量使用函数来简化代码逻辑。
函数是对程序的简化。如果有很多段相同的代码,那么定义一次函数后再调用多次,则会大大减少代码量,降低查错难度。
函数定义的格式如下:
```
函数返回类型 函数名(参数列表){
语句;
return 返回值;
}
若函数不需要返回值,那么返回类型可以定义为void类型,且return直接跟分号即可。
例如:
int pow(int x,int y){
int ret=1;
for(int i=1;i<=y;i++)
ret*=x;
return ret;
}
在使用一个函数时,只需要函数名和对应的参数即可
比如定义了上面的pow函数后,在程序里使用
pow(2,10)
就可以得到2的10次方的结果。
使用pow(a,b)就可以得到a的b次方的结果
也可以将数组作为参数传入。
定义下面这个参数求出一个数组的最大值
int max(int a[],int n){
int ret=0;
for(int i=1;i<=n;i++)
if(a[i]>ret)
ret=a[i];
return ret;
}
在你想求一个数组的最大值时,就可以这么写:
int main(){
int b[100],n;
//输入n和n个数,省略
printf("%d",max(b,n));
}
```
*按值传递与按引用传递:
```
在三位数排序的程序里需要多次执行交换两个数的代码,于是想写一个函数来交换两个数,使得代码量减少。
学过上面的知识后可能会这么写:
void swap(int x,int y){
int t=x;
x=y;
y=t;
}
然后在主程序里调用swap(a,b);
然后你就会发现这个函数根本不起作用。
这是由于在函数里交换了x和y变量,只会影响到x和y,不会影响到外面的a和b。
若要这个函数起作用,那么需要在定义时这样定义:
void swap(int &x,int &y){省略...}
加上&符号后,改变x和y的值,就能改变外面对应的变量。
我们把这种叫做按引用传递。//基本上只有在交换两个数的时候才会用到
大部分情况还是不加&符号,叫做按值传递。
```