函数:
int a_sum(){}
int : 返回类型;
a_sum : 函数名;自定义,最好加上前缀,以防函数名重定义
() : 存放形参;内含调用函数传递给被调用函数的信息;
{} : 函数体;内存放执行函数功能的代码
函数参数默认值:
//函数高级
#include<iostream>
using namespace std;
//int a_sum(int a,int b,int c=20);//函数声明
int a_sum(int a, int b = 10, int c = 20) {//函数定义
return a + b + c;
}
int main() {
//int answer=a_sum();//报错
int answer1 = a_sum(10);//输出10+10+20
int answer2 = a_sum(10, 20);//输出10+20+20=50 //若主函数未传递值,那么以初始化值计算
int answer3 = a_sum(10, 20, 30);//输出10+20+30 //若主函数传递了值,那么以主函数传递值计算
cout << "answer1 : " << answer1 << " answer2 : " << answer2 << " answer3 : " << answer3 << endl;
return 0;
}
如上a_sum函数,主函数调用sum函数,并且传递了三个参数a,b,c给sum函数;
通常我们需要传递三个函数给sum,但是由于上文sum中b,c已经初始化,因此在主函数不传递b,c的值的情况下,会默认b,c为初始化值而正常运行;而如果主函数传递b,c的值,那么便会以主函数传递的值进行运算;
而sum中a并没有初始化,因此若调用函数不传递a的值,那么程序便无法运行;
注意:
1.若上述中,int a_sum(int a,int b,int c){}中
b被初始化了--int a_sum(int a,int b=10,int c){}
那么其后的参数(c)都必须初始化,否则便会报错;
2.若函数声明有默认参数(初始化),那么函数实现就不能有默认参数(初始化);只能其中一个进行初始化;
在编写时并不会报错,但在编译的时候无法运行;
函数占位参数:
void func(int a,int);
void func(int a,int=10);--函数占位参数也可以初始化(有默认值)
但注意:占位参数在之后必须补齐;