用于将一段经常使用的代码封装起来,减少重复代码。一个较大的程序中,一般分为若干个程序块,每个程序块实现特定的功能。
函数的定义函数的定义一般有5个步骤:
- 返回值类型
- 函数名
- 参数表列,参数可有可无
- 函数体语句
- return表达式,返回值可有可无
语法:
返回值类型 函数名 (参数列表) { 函数体语句; return表达式; }
#include函数的调用using namespace std; // 定义一个两数相加的函数 // 函数定义时,num1和num2并没有真实数据,只是形式上的参数,简称形参 int add(int num1, int num2) { int sum = num1 + num2; return sum; } int main(){ system("pause"); return 0; }
函数调用语法:
函数名(参数);
#include值传递using namespace std; // 定义函数 int add(int num1, int num2) { int sum = num1 + num2; return sum; } // 在main函数中调用add函数 int main(){ int a = 10, b = 20; int c = add(a, b); cout << "c = " << c << endl; system("pause"); return 0; }
所谓值传递,就是函数调用时实参将数值传入给形参
值传递时,如果形参发生改变,并不影响实参
#include函数的声明using namespace std; // 定义一个函数,实现两个数字进行交换函数 // 如果函数不需要返回值,声明的时候可以写void void swap(int num1, int num2) { cout << "交换前num1 = " << num1 << endl; cout << "交换前num2 = " << num2 << endl; int temp = num1; num1 = num2; num2 = temp; cout << "交换后num1 = " << num1 << endl; cout << "交换后num2 = " << num2 << endl; // return; // 无返回值可以不写return,也可以写return不跟任何返回值 } int main() { int a = 10, b = 20; // a b的值给到形参num1 num2的内存空间,不影响a b本身内存空间里的值 swap(a, b); cout << "a = " << a << endl; // 输出结果为10 cout << "b = " << b << endl; // 输出结果为20 system("pause"); return 0; }
用于告诉编译器函数名称及如何调用函数。函数的实际主题可以单独定义
- 函数的声明可以多次,但是函数的定义只能有一次
#include函数的分文件编写using namespace std; // 以前告诉编译器函数的存在,可以利用函数的声明 // 函数的声明: int max(int a, int b); // 声明可以写多次(但没必要),但是函数的定义只能有一次 int max(int a, int b); int max(int a, int b); int main() { int a = 10, b = 20; cout << max(a,b) << endl; system("pause"); return 0; } // 函数定义于调用之后,若没有提前声明将报错 // 只要在调用之前声明函数,定义函数可以写在任何位置,包括写于调用前 int max(int a, int b) { return a > b ? a : b; }
作用:让代码结构更加清晰
函数份文件编写一般有4个步骤:
-
创建后缀名为.h的头文件
-
创建后缀名为.cpp的源文件
-
在头文件中写函数的声明
-
在源文件中写函数的定义
// swap.h头文件 #includeusing namespace std; void swap(int a, int b);
// swap.cpp源文件 // 关联头文件swap.h,自定义的头文件用双引号 #include "swap.h" void swap(int a, int b) { int temp = a; a = b; b = temp; }
// main()函数所在的源文件 #include// 关联头文件 #include "swap.h" using namespace std; int main() { int a = 10, b = 20; // 调用函数 swap(a, b); system("pause"); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)