12.C++程序中的自定义函数
11.C++程序中的常用函数-CSDN博客https://blog.csdn.net/fly_binbin/article/details/142643406上面说的是C++程序中内置的一些函数,这些函数是由编译器提供的,可以方便大家的使用,但是很多时候,单纯的内置函数无法满足人们的需求,这个时候就要用到自定义函数了。
将多个步骤集中在一起,可以供其它调用方重要使用的,就是函数,即函数是为执行某些功能而集成的代码块。
函数的格式一般如下:
返回类型 函数名(参数1,参数2...)
{
处理代码块;
返回值;
上面统称为函数体
}
函数由 返回值 ,函数名,参数和函数体构成,返回值指的是函数执行完所要返回的内容,如果没有返回则为void,函数名,则定义函数的名称,参数,是声明的接收数据的特定的变量。
如:
#include <iostream>
#include <math.h> //需要包含头文件
using namespace std;
//比较两个数的大小,并返回小值
int Min(int x, int y) {
if (x > y)
return y;
else return x;
}
int main() {
}
上面的int Min(int x,int y)则为一个函数,第一个int 为返回值的类型,函数名叫Min,有两个int类型参数,分别为x,y。
if (x > y)
return y;
else return x;
上面的代码为函数体,返回的是int类型的值。
定义好函数了,就要使用函数,所谓函数的使用,就是函数的调用。在调用函数,一般为:
int t=Min(x,y)
定义一个int类型的t变量,接收Min返回的值,程序在运行到int t=Min(x,y)时,将会跳转到函数中进行执行,在执行完后,继续执行后面的代码,
#include <iostream>
#include <math.h> //需要包含头文件
using namespace std;
//比较两个数的大小,并返回小值
int Min(int x, int y) {
if (x > y)
return y;
else return x;
}
int main() {
int x = 10;
int y = 20;
//调用函数,初始化t
int t = Min(x, y);
cout << t << endl;
}
在通过Min调用自定义函数时,变量x的值被赋值给了Min的变量x,为了看的更清楚,我们把main中定义的x,y修改一个名称:
#include <iostream>
#include <math.h> //需要包含头文件
using namespace std;
//比较两个数的大小,并返回小值
int Min(int x, int y) {
if (x > y)
return y;
else return x;
}
int main() {
int a = 10;
int b = 20;
//调用函数,初始化t
int t = Min(a, b);
cout << t << endl;
}
这个时候执行代码:
并不影响执行结果,,那个Min中的参数x,y,他们被称作形参,属于一个形式参数,在a,b赋值给他的时候,其实是赋值的a,b的副本,两个有相同的值。
由于函数的参数是通过值传递的,所以函数调用中的参数,可以是一个有返回值的表达式。
上面是普通数值的传递,如果遇到数组,应该怎么传递呢,他们两个是有区别的,比如下面的数,取数组中的最小值,
#include <iostream>
#include <math.h> //需要包含头文件
using namespace std;
//比较两个数的大小,并返回小值
int Min(int x[], int arrayLength) {
int i, min = 65535;
cout << arrayLength << endl;
for (i = 0; i < arrayLength; i++) {
cout << i << " " << x[i] << endl;
if (min > x[i])
min = x[i];
}
return min;
}
int main() {
int aa[7] = {10, 2, 3, 4, 2, 1, 3};
int t = Min(aa, 7);
cout << "t=" << t << endl;
}
函数的形参还可以传递指针等参数,函数在传递数组时,传递过去的仅仅是名称不同,他们指向的还是同一个内存地址,如果在函数中,修改了其中一个值的内容,那么外面的实参的内容也会修改。