一、函数的调用
函数就是将一段代码进行封装然后方便调用。若干个函数可以作为若干个模块进行调用。提高代码的阅读效率。
在C语言中也就是函数封装,所以这里就不写了。
二、函数的值传递
这里记录下,因为这里会涉及到一个问题点就是,传递值的时候,是将实际参数传递给形参,形参改变而实际参数没有改变并不会影响对应的值。
我们直接看例子
#include <iostream>
using namespace std;
/*定义一个交换函数*/
void swap(int a, int b)
{
int temp;
cout << "swap交换前的值" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
temp = a;
a = b;
b = temp;
cout << "swap交换后的值" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
int main()
{
int c = 5;
int d = 10;
cout << "main交换前的值" << endl;
cout << "c = " << c << endl;
cout << "d = " << d << endl;
swap(c, d);
cout << "main交换后的值" << endl;
cout << "c = " << c << endl;
cout << "d = " << d << endl;
system("pause");
return 0;
}
可以看到在swap该函数里面,我们的值是改变了的,但是在main的函数里面,交换前后的值并没有变。
原因就是我们的实际参数c和d没有进行任何操作,我们只是改变了形参a和b,所以c和d没有改变。
三、函数的常见样式
一共有4中类型
1、无参数 无返回值
2、无参数 有返回值
3、有参数 无返回值
4、 有参数 有返回值
#include <iostream>
using namespace std;
/*1、无参数 无返回值*/
void test_1()
{
cout << "无参数 无返回值函数" << endl;
}
/*2、无参数 有返回值*/
int test_2()
{
cout << "无参数 有返回值函数" << endl;
return 0;
}
/*3、有参数 无返回值*/
void test_3(int a, int b)
{
int sum = a + b;
cout << "有参数 无返回值函数 sum = " << sum << endl;
}
/*4、 有参数 有返回值*/
int test_4(int a, int b)
{
int sum = a + b;
cout << "有参数 有返回值函数 sum = " << sum << endl;
return sum;
}
int main()
{
int c = 5;
int d = 10;
test_1();
test_2();
test_3(c, d);
test_4(c, d);
system("pause");
return 0;
}
这里都是最简单的例子,在真正的代码中,会通过返回值传递参数来对函数进行判断,然后打印不同的信息,达到不同的目的。也就是后期的回调函数。
四、函数的声明
函数可以多次声明,但是函数的定义只有一个。
#include <iostream>
using namespace std;
/*函数的定义*/
int max(int a, int b)
{
return a > b ? a : b; //三目运算
}
/*函数的声明*/
int max(int a, int b);
int max(int c, int d);
int max(int e, int f);
/*主函数*/
int main()
{
int c = 5;
int d = 10;
cout << max(c, d) << endl;
system("pause");
return 0;
}
为什么要有声明,因为有些函数可能在main函数后面,函数从上到下执行,如果我们在main函数后面进行函数的定义,在main函数前面又不进行声明,他会报错,提示找不到函数。而声明就是告诉main函数,我有这个东西,你先执行不用报错,后面可以把定义的内容添加进来,而且哦我们可以多次声明,但是我们不能多次定义。
在标准代码中,我们都会把定义函数写在前面,main函数写在后面,规范也为了减少一些报错。
五、函数的头文件
就是将封装的函数写在.h文件里面。这样就可以减少.cpp文件的代码量,具体用法就不说了,和C一样,包含头文件即可