• c++中的函数


    一、函数概述

    作用:将一段经常使用的代码封装起来,减少重复代码

    一个较大的程序,一般分为若干个程序块,每个程序块实现特定功能。

    二、函数的定义

    函数定义主要有5个步骤:

    1. 返回值类型
    2. 函数名
    3. 参数列表
    4. 函数体语句
    5. return表达式

    注意:函数不能写到main函数中去

    1. #include
    2. using namespace std;
    3. //函数定义
    4. //语法
    5. //返回值类型 函数名( 参数列表){ 函数体语句 return表达式}
    6. //加法函数,实现两个整型相加,并且将相加的结果进行返回
    7. int add(int a, int b) {
    8. int sum = a + b;
    9. return sum;
    10. }
    11. //主函数
    12. int main() {
    13. system("pause");
    14. return 0;
    15. }

    三、函数调用

    功能:使用定义好的函数

    语法:函数名(参数)

    1. #include
    2. using namespace std;
    3. //函数定义
    4. //语法
    5. //返回值类型 函数名( 参数列表){ 函数体语句 return表达式}
    6. //加法函数,实现两个整型相加,并且将相加的结果进行返回
    7. int add(int a, int b) {
    8. int sum = a + b;
    9. return sum;
    10. }
    11. //主函数
    12. int main() {
    13. int a = 10;
    14. int b = 20;
    15. //main 函数中调用add函数
    16. //函数调用语法:函数名称(参数)
    17. //a,b称为实参
    18. //当调用函数的时候,实参的值会传递给形参
    19. int sum=add(a, b);
    20. cout<
    21. int c = 100;
    22. int d = 200;
    23. sum = add(c, d);
    24. cout << sum << endl;
    25. system("pause");
    26. return 0;
    27. }

    四、值传递

    • 所谓值传递,就是函数调用时实参将数值传给形参
    • 值传递时,如果形参发生改变,并不会影响实参
    1. #include
    2. using namespace std;
    3. //值传递
    4. //定义函数,实现两个数字进行交换
    5. //如果一个函数不需要返回值使用 void 表示,否则使用数据类型表示。
    6. void swap(int a, int b) {
    7. cout << "交换前:" << endl;
    8. cout << "a=" << a << endl;
    9. cout << "b=" << b << endl;
    10. int temp = a;
    11. a = b;
    12. b = temp;
    13. cout << "交换后:" << endl;
    14. cout << "a=" << a << endl;
    15. cout << "b=" << b << endl;
    16. }
    17. int main() {
    18. int a = 10;
    19. int b = 20;
    20. cout << "a=" << a << endl;
    21. cout << "b=" << b << endl;
    22. swap(a, b); //调用函数,传递两个参数
    23. //当我们做值传递的时候函数的形参发生改变,但是实参不受影响。
    24. cout << "a=" << a << endl;
    25. cout << "b=" << b << endl;
    26. system("pause");
    27. return 0;
    28. }

    五、函数的常见样式

    常见的函数样式有4种

    1. 无参无返
    2. 有参无返
    3. 无参有返
    4. 有参有返
    1. #include
    2. using namespace std;
    3. //函数的常见样式
    4. //1.无参无返
    5. void test01() {
    6. cout << "无参无返" << endl;
    7. }
    8. //2.有参无返
    9. void test02(int a) {
    10. cout << "有参无返 a=" <
    11. }
    12. //3.无参有返
    13. int test03() {
    14. cout << "无参有返" << endl;
    15. return 10;
    16. }
    17. //4.有参有返
    18. int test04(int a) {
    19. cout << "有参有返 a=" << a << endl;
    20. return a;
    21. }
    22. int main() {
    23. //无参无返的函数调用
    24. test01();
    25. //有参无返的函数调用
    26. test02(10);
    27. //无参有返的函数调用
    28. int b = test03();
    29. cout << "无参有返的返回值 b=" << b << endl;
    30. //有参有返的函数调用
    31. int c = test04(20);
    32. cout << "有参有返的返回值 c=" << c << endl;
    33. system("pause");
    34. return 0;
    35. }

    六、函数声明

    作用:告诉编译器函数名称及如何调用函数。函数的实际主题可以单独定义。

    函数的声明可以多次,但函数的定义只能有一次

    1. #include
    2. using namespace std;
    3. // 函数声明
    4. //比较函数,实现两个整型数字进行比较,返回较大的值
    5. //定义
    6. int max(int a, int b) {
    7. return a > b ? a : b; // 三目运算符,返回较大的值
    8. }
    9. int main() {
    10. int a = 10, b = 20;
    11. int result = max(a, b); //调用函数
    12. cout << "The maximum value is: " << result << endl;
    13. system("pause");
    14. return 0;
    15. }

    如果把函数的定义放在main函数之后会报错

    解决方案:对函数进行声明

    1. #include
    2. using namespace std;
    3. // 函数声明
    4. //比较函数,实现两个整型数字进行比较,返回较大的值
    5. //定义
    6. //提前告诉编译器函数存在,可以利用函数声明来调用函数,而不需要实现函数体
    7. int max(int a, int b);
    8. int main() {
    9. int a = 10, b = 20;
    10. int result = max(a, b); //调用函数
    11. cout << "The maximum value is: " << result << endl;
    12. system("pause");
    13. return 0;
    14. }
    15. int max(int a, int b) {
    16. return a > b ? a : b; // 三目运算符,返回较大的值
    17. }

    七、函数的分文件编写

    作用:让代码结构更加清晰

    函数份文件编写一般分为4个步骤

    1. 创建后缀名为.h的头文件
    2. 创建后缀名为.cpp的源文件
    3. 在头文件中写函数的声明
    4. 在源文件中写函数的定义

    头文件swap1.h

    1. #include
    2. using namespace std;
    3. //函数的声明
    4. void swap1(int a, int b);

    源文件 swap1.cpp

    1. #include "swap1.h"//与头文件关联
    2. //函数的定义
    3. void swap1(int a, int b) {
    4. int temp = a;
    5. a = b;
    6. b = temp;
    7. cout << "a = " << a << " b = " << b << endl;
    8. }

    函数调用

    1. #include
    2. using namespace std;
    3. #include "swap1.h" //引入函数的头文件
    4. //函数的分文件编写
    5. //实现两个数字交换的函数
    6. //函数的声明
    7. //void swap1(int a, int b);
    8. 函数的定义
    9. //void swap1(int a, int b) {
    10. // int temp = a;
    11. // a = b;
    12. // b = temp;
    13. // cout << "a = " << a << " b = " << b << endl;
    14. //
    15. //}
    16. int main() {
    17. int a=10, b=20;
    18. swap1(a, b); //调用函数
    19. system("pause");
    20. return 0;
    21. }

  • 相关阅读:
    使用curl命令传输数据
    C#Assembly的使用
    MySQL(四)——正则表达式查询、插入数据、删除数据
    方圆的秒杀系统优化方案实战,(九)Sentinel限流和Nacos配置
    秋季开学,培训机构如何做好线下招生?
    DGIOT平台基本功能介绍——物模型及指令通道相关部分介绍
    二十三、SpringBoot + Jwt + Vue 权限管理系统 (4)
    Kubernetes中的探针机制
    ONLYOFFICE 8.0:引领数字化办公新纪元
    C++调用OpenCV实现图像平滑处理
  • 原文地址:https://blog.csdn.net/m0_64703222/article/details/138165190