函数的概念
输入——>函数体:完成某种功能——>输出(独立的黑匣子)
在C++中,可以将一段经常使用的代码封装起来,在需要使用时直接调用,这就是程序中的函数。
C++程序的执行是从main函数开始的,如果在main函数中调用了其他函数,在调用后程序返回到main函数,在main函数中结束整个程序的运行。
函数分为:无参函数和有参函数
函数的声明
先声明,后使用。
如果需将函数定义放在函数调用后,我们需要采用函数声明的方式。
格式:
函数返回值类型 函数名称(形参列表)
int select_biggest(int a,int b,int c);
函数原型:函数返回类型、函数名称和形参列表
函数声明后有分号,是语句。
函数声明可以定义在函数外部,则当前文件从声明位置到文件结束的任何函数中都可以调用该函数。
函数定义包括函数头和函数体,函数声明是为了编译的需要,知道这个函数的基本信息。
函数声明在头文件中更加美观和容易修改重利用。
函数的定义
无参函数:
函数返回值类型(可以是void) 函数名()
{
定义部分
语句部分
(有返回值是一定要有return语句)
}
有参函数
函数返回值类型 函数名(形式参数列表)
{
定义部分
语句部分
}
函数的返回值
return语句的后面可以是一个值,也可以是能够得出值的表达式
C++函数中必须指定返回类型
可以使整型、浮点型、类类型、符合类型、或是空类型(void)
注意:函数返回值类型一般应该与return语句中的表达式类型一致,如果不一致应当以函数返回值(函数名前的类型)类型为准。
//函数返回类型与return类型不同
#include<iostream>
using namespace std;
//声明函数,返回值为int类型
int select_biggest(int a, int b, int c);
void main()
{
double a, b, c;
cout << "a= ";
cin >> a;
cout << "b= ";
cin >> b;
cout << "c= ";
cin >> c;
cout << "The biggest number is " << select_biggest(a, b, c);//调用函数
cout << endl;
system("pause");
}
int select_biggest(int a, int b, int c) //定义被调用函数
{
double biggest;
if (a > b)
biggest = a;
else
biggest = b;
if (biggest > c)
return biggest;
else
return c;
}
函数的形参表
int get_bigger(int a,int b,int c);//right
int get_bigger(int a, b, c);//wrong
形参表可为空(不填或填void)
调用函数时,每一个实际参数的类型都必须与对应的形参类型相同,或者是可以转换成形参类型的数值类型。在这种情况下,实参会被隐式的转换成形参的类型,再进行数据传递。(实参被转换为形参类型、实参——>形参)
最好是实参和形参的类型保持一致,否则可能造成精度的缺失,导致效果不同。
函数的参数传递
非引用类型的形参,赋值的是值;
引用类型的形参,它只是实参的别名,不会赋值实参的值。
在定义函数的时候制定的形参,在没有出现函数调用时,并不占用内存中的存储单元。在发生函数调用时,函数中的形参才被分配内存单元,调用结束后形参所占用的内存单元也会被释放。
引用形参
//未使用引用形参的互换函数
#include<iostream>
using namespace std;
void swap(int x, int y); //声明函数
void main()
{
int a = 10;
int b = 20;
//输出调用函数之前的a和b
cout << "Before change :" << endl;
cout << "