1.函数的定义
定义函数三要素:函数名、参数列表、返回值;
1.2.函数原型
在函数使用前,必须对它进行声明,这个声明也称为函数原型。如:
#include <iostream>
//add()函数原型
int add(const int& i,const int& j);
int main()
{
using namespace std;
int i = 45;
int j = 200;
int sum = add(i,j);
system("pause");
return 0;
}
int add(const int& i, const int& j) {
std::cout << "i:" << i << ",j:" << j << std::endl;
return i + j;
}
函数原型和函数唯一的区别就是函数原型不提供函数体,它描述了函数到编译器的接口,由于不需要方法体,因此函数声明不要求提供变量名,不过应尽可能写上。
函数原型一般在头文件中声明。
2.函数参数的传递
函数参数的传递有三种方式:按值传递、指针传递、引用传递,下面我们来看他们各自的特点。
2.1.按值传递
c++中通常按值传递(非引用类型),也就是说当实参传递给形参时,将实参的值赋给了形参,实参并没有影响,如:
#include <iostream>
void Swap(int i,int j);
int main()
{
using namespace std;
int fir = 100;
int sec = 300;
Swap(fir, sec);
cout << "fir:" << fir << ",sec:" << sec << endl;
system("pause");
return 0;
}
void Swap(int i, int j) {
int temp;
temp = i;
i = j;
j = temp;
}
运行该程序,发现并没有交换fir和sec的值,在函数调用时,函数将创建一个int类型的变量i,然后将fir的值100赋给它,因此实际上函数Swap()中操作的是局部变量i,而非变量fir。
按值传递导致被调用函数使用调用程序传递的值的拷贝。
2.2.按指针传递
当函数传递指针类型参数时,实际上,也是按值传递,但是这个值是一个地址,因此,就可以通过这个指针来修改所指对象的值了。如:
#