当前位置: 首页 > news >正文

【入门级-C++程序设计:9、函数与递归-函数定义与调用、形参与实参】

一、函数定义与调用

  1. 函数定义
    函数定义包括以下部分:
    返回值类型 函数名(参数列表) {
    // 函数体(逻辑代码)
    return 返回值; // 如果返回值类型非 void
    }

关键组成部分:
返回值类型:函数返回的数据类型(如 int、double、void 表示无返回值)。
函数名:标识函数的名称(遵循命名规则,如不能以数字开头)。
参数列表:输入参数(可选),格式为 类型 参数名,多个参数用逗号分隔。
函数体:包含具体执行的代码。
return 语句:返回结果(void 函数可省略或写 return;)。

举例说明:
// 计算两数之和
int add(int a, int b) {
return a + b;
}

// 无返回值的函数
void printHello() {
cout << “Hello, World!”;
}

  1. 函数调用
    通过函数名和实际参数(若有)来调用函数:
    函数名(实参列表);

调用方式:
直接调用:忽略返回值(仅对 void 函数或不需要返回值时)。
printHello(); // 输出:Hello, World!
赋值调用:将返回值赋给变量。
int result = add(3, 5); // result = 8
表达式调用:在表达式中使用返回值。
cout << add(2, add(3, 4)); // 输出:9

二、形参与实参
在C++中,形参(形式参数)和实参(实际参数)是函数调用时传递数据的两个关键概念,它们的区别和联系如下:
1、 形参(Formal Parameter)
定义:函数定义时声明的参数,用于接收调用时传递的值。
作用:规定函数需要的数据类型和数量,是函数内部的局部变量。
生命周期:函数调用时创建,函数结束时销毁。

举例说明:
void printSum(int a, int b) { // a 和 b 是形参
cout << a + b;
}

2、 实参(Actual Parameter)
定义:函数调用时传入的具体值或变量。
作用:为形参提供实际数据,可以是常量、变量或表达式。
关键要求:实参的类型和数量必须与形参匹配(或可隐式转换)。

举例说明:
int x = 5, y = 10;
printSum(x, y); // x 和 y 是实参
printSum(3, 7); // 3 和 7 是实参(常量)
printSum(x+1, y); // x+1 是表达式作为实参

3、 参数传递的三种方式
(1)值传递(Pass by Value)
特点:实参的值被拷贝给形参,函数内修改形参不影响实参。

举例说明:
void change(int num) { num = 100; } // 形参 num 是实参的副本

int main() {
int a = 10;
change(a); // 实参 a 的值(10)拷贝给形参 num
cout << a; // 输出 10(a 未被修改)
}
(2)引用传递(Pass by Reference)
特点:形参是实参的别名,函数内修改形参直接影响实参。

语法:在形参前加 &。

举例说明:
void change(int &num) { num = 100; } // num 是实参的引用

int main() {
int a = 10;
change(a); // num 直接绑定到 a
cout << a; // 输出 100(a 被修改)
}
(3)指针传递(Pass by Pointer)
特点:传递实参的地址,通过指针间接修改实参。

语法:形参为指针类型(类型*),调用时需取地址(&)。

举例说明:
void change(int *num) { *num = 100; } // num 是指向实参的指针

int main() {
int a = 10;
change(&a); // 传递 a 的地址
cout << a; // 输出 100(a 被修改)
}

4、常见问题与注意事项
类型匹配:实参类型必须与形参兼容(或可隐式转换)。
void func(double x) {}
func(5); // OK:int 隐式转 double

默认实参:C++允许形参设置默认值(需从右向左连续定义)。
void greet(string name, string msg = “Hello”) {
cout << msg << ", " << name;
}
greet(“Alice”); // 输出:Hello, Alice

函数重载:形参列表不同可定义同名函数。
int max(int a, int b);
double max(double a, double b);

常量形参:用 const 防止意外修改(尤其用于引用或指针)。
void print(const string &s) {
// s 不能被修改
}

http://www.dtcms.com/a/320223.html

相关文章:

  • RESTful 服务概述:从理念到实践的全面解析
  • Coze开放平台综合文档指南
  • 达梦包含OR条件的SQL特定优化----INJECT-HINT优化方法
  • 最新完整内、外期货量化交易系统C#源码可售
  • 【C#补全计划:类和对象(九)】接口
  • redis--黑马点评--用户签到模块详解
  • dubbo源码之编解码逻辑
  • 一场 Dark Theme A/B 测试的复盘与提效实践
  • 聚集索引VS非聚集索引:核心差异详解
  • rebase 和pull的通俗区别是什么
  • 一个基于固定 IP地址查询天气的 C 语言程序,通过调用第三方天气 API:
  • React 多语言(i18n)方案全面指南
  • 计算机英语详细总结
  • 本地化密码恢复工具的技术实现与应用边界
  • RabbitMQ面试精讲 Day 13:HAProxy与负载均衡配置
  • Git `cherry-pick` 工具汇总
  • Docker 加载镜像时出现 “no space left on device” 错误的解决方法
  • Java Lambda表达式:简洁高效的函数式编程
  • 关于光猫研究
  • 【代码随想录day 14】 力扣 101. 对称二叉树
  • 技法笔记3 | 验证交互式shell连接
  • LocalSqueeze(图片压缩工具) v1.0.4 压缩
  • 美图复现|Science:添加显著性的GO富集分析美图
  • Nuxt 4.0 完全指南:Nitro 引擎升级与 Composable API 深度解析
  • 关于Android studio调试功能使用
  • 如何选择适合中小企业的OA系统?XKOA低成本高定制化方案详解
  • 数据可视化Matplotlib
  • 【AI智能编程】Cursor IDE工具学习
  • P1037 [NOIP 2002 普及组] 产生数
  • vue-plugin-hiprint 打印模版使用