11、形参和实参的概念

部署运行你感兴趣的模型镜像

1、形参和实参的概念:

①形式参数:在函数定义中出现的参数,可以看做是一个占位符,它没有数据,只能等到函数被调用时接受传递进来的数据,所以成为形式参数,简称:形参。

②实际参数:函数被调用时给出的参数,包含实实在在的数据,会被函数内部的代码使用,所以被称为实际参数,简称:实参。

 2、参数的功能:

形参和实参的功能是数据传递,发生函数调用时,实参的值会传递给形参。

 3、形参和实参的特点:

3.1、形参变量只有在函数被调用时才会分配内存,调用结束后立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。

3.2、实参可以是常量、变量、表达式、函数等,无论实参是和种类型的数据,在进行函数调用时,都必须有确定的值,以便吧这些值传递给形参,所以应该提前用赋值、输入等办法使用实参获得确定值。

3.3、实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。
 ***注意:函数调用中发生的数据传送是单向的,即只能吧实参的值传给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变时,实参的值不会承受之变化。
 说白了就是参数,形参是在函数括号中的,用来占位置的,实参是在后面给它赋值的参数

 例子:形参和实参的应用:
def gg(name, price):  # 括号中的东西呢,给他个名字就是 形参
    """输出商品的信息"""
    print('名称:', name)  # 结果为:名称: 冰箱
    print('价格:', price)  # 结果为:价格: 4600
    return

gg('冰箱', 4600)  # 括号中的是实参,调用函数时,将实参赋值给形参name和price
 *****注意:在定义函数时,函数的参数就是形参,形参即形式上的参数,它代表参数,但是不知道具体代表的是什么参数。实参就是调用函数时的参数,即具体的、已经知道的参数。*****

# 对自定义的函数可以使用任何表达式作为实参:gg('冰箱'*4, 4600)
# 保存并运行程序,输出结果为:名称:冰箱冰箱冰箱冰箱 \\ 价格:4600
# 变量也可以作实参:aa = '冰箱'  \  gg(aa, 4600)
# 由此可见,实参的名称和函数定义里的名称没有关系。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 嗯,用户想了解形参实参的定义。根据之前提供的引用内容,需要系统化整理这两个核心概念的区别联系。 首先查看引用[1]的表述:形参是函数定义时的占位符,实参是函数调用时传递的实际值。这个描述很清晰,突出了两者的时空差异——形参存在于函数定义阶段,实参存在于调用阶段。 引用[3]的示例很生动,说明当调用Max(a,b)时,ab是实参,而函数定义里的xy是形参。这里特别注意到实参可以是变量/常量/表达式,但必须具有确定值。 引用[2]虽然针对Java,但原理相通,强调形参本质是"接收容器",实参是"传递内容"。这个容器比喻很形象,准备在回答时采用。 用户可能存在的潜在疑问是:为什么需要区分这两者?考虑在回答中加入"类比快递"的例子:形参就像订单预留的收件人信息栏(空容器),实参则是实际填写的收货地址(具体内容)。这样能帮助理解参数传递的抽象过程。 注意到三个引用都强调值传递特性——形参作为实参的独立副本存在。这点很重要,需要明确说明修改形参不影响实参,这是很多初学者容易混淆的点。 最后检查术语准确性:确保所有描述与引用[1][3]的C语言语境一致,避免混入引用[2]的Java特性。例如C语言严格使用"函数"而非Java的"方法"。 </think>形参实参是函数/方法调用中的核心概念,它们的定义区别如下: ### 📌 形参(形式参数) 1. **定义位置**:函数/方法的**定义**中声明 2. **本质**:占位符(接收实参传递值的变量) 3. **生命周期**:函数调用时创建,函数结束时销毁 4. **作用**:定义函数所需数据的类型顺序 5. **示例**: ```c int add(int x, int y) { // x, y 是形参 return x + y; } ``` ### 📌 实参(实际参数) 1. **定义位置**:函数/方法的**调用**处提供 2. **本质**:传递给函数的实际数据(常量/变量/表达式) 3. **要求**:必须有确定的值 4. **作用**:为形参提供具体数据 5. **示例**: ```c int main() { int a = 3, b = 5; int sum = add(a, b); // a, b 是实参 } ``` ### 🔑 核心区别 | 特性 | 形参 | 实参 | |------------|--------------------------|--------------------------| | **存在阶段** | 函数定义时 | 函数调用时 | | **本质** | 数据接收容器(占位符) | 实际传递的数据 | | **是否必须**| 函数定义的必需部分 | 函数调用的必需部分 | ### ⚠️ 关键特性 1. **值传递机制**(C语言典型场景): ```c void modify(int num) { // num 是形参 num = 10; // 修改不影响实参 } int main() { int x = 5; modify(x); // x 是实参,值仍为5 } ``` - 形参实参的**独立副本**,修改形参**不影响**实参[^1][^3] 2. **匹配规则**: - 数量、顺序、类型必须严格匹配 - 例如 `add(3, "hello")` 会导致类型错误[^1][^3] > **类比理解**:形参如同快递单上的收件人信息栏(预留空位),实参是你实际填写的地址(具体数据)。调用函数时,系统将实参的值“复制”到形参的地址栏中完成数据传递。 --- ### ❓ 相关问题 1. 值传递引用传递对形参/实参的影响有何不同? 2. 在C++中如何通过引用形参修改实参的值? 3. 函数重载时形参列表如何决定调用哪个函数? 4. 默认参数在形参声明中如何工作? 5. 变长参数函数(如`printf()`)的形参如何声明? [^1]: 形参是函数定义时的占位符,用于接收从外部传入的值;实参是函数调用时传递给函数的实际值。 [^2]: 形参实参的核心区别在于定义位置作用。 [^3]: 实参可以是变量,常量,表达式,但必须是确定的值,调用时将值赋给形参
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值