- 概述
作用:
将一段经常使用的代码,封装起来,减少重复代码。
一个较大的程序,通常分为若干个代码块,每个模块实现特定的功能。 - 函数的定义:
返回值类型 函数名 参数列表 函数体 return表达式
参数列表一般放在小括号中,函数体和return表达式放在大括号中。
返回值的类型就是return表达式结果的数据类型。
eg:
int test_add(int a, int b)
{
int c;
c = a + b
return c;
}
- 函数的调用
作用:使用已经定义好的函数
语法:函数名(传入的参数列表)
下面的例子中,在main函数里面调用了test_add函数。
int test_add(int a, int b)
{
int c;
c = a + b
return c;
}
int main()
{
int num1 = 5;
int num2 = 10;
int sum = test_add(num1, num2);
std::cout << sum << std::endl;
return 0;
}
- 值传递
意思是在调用定义好的函数时,将实际的参数值,传递给调用的函数的参数列表中。
定义的函数的参数列表中,参数是形参,实际传入的值叫实参。
形参发生变化,对实参并不影响。
eg:
上面的例子中,test_add函数中的,int a和int b是形参,而在main函数中调用test_add时,使用的num1和num2是实参。
下面的test_add中在a 和b使用后全都置零,但是num1,和num2,的值不会被影响。
int test_add(int a, int b)
{
int c;
c = a + b
a = 0;
b = 0;
return c;
}
int main()
{
int num1 = 5;
int num2 = 10;
int sum = test_add(num1, num2);
std::cout << sum << std::endl;
return 0;
}
- 函数的常见样式
1.无参无返
2.无参有返
3.有参无返
4.有参有返
上面的例子,test_add符合 样式4
main函数符合 样式2
void test_01()//样式1
{
std::cout<< "执行 test_01 " << std::endl;
}
void test_02(int a, int b) //样式3
{
std::cout<< a+b << std::endl;
}
- 函数的声明:
如果被main函数调用的函数,函数定义在main函数之后就需要函数的声明,以便于main函数在调用该函数时,找到定义的函数。如果函数定义在main函数之前的话,函数的声明可有可无。
语法:
返回值类型 函数名(参数列表);
函数的声明可以有多个,但是函数的定义只能有一个。
eg:
int test_add(int a, int b);//函数的声明
int test_add(int a, int b);//函数的声明
int main()
{
int num1 = 5;
int num2 = 10;
int sum = test_add(num1, num2);
std::cout << sum << std::endl;
return 0;
}
int test_add(int a, int b)
{
int c;
c = a + b
a = 0;
b = 0;
return c;
}
如果函数的定义在main函数后面,但是没有声明,程序执行的时候,将会报错,调用没有定义的函数。
欢迎留言交流!!!