传值和传址的区别

博客介绍了函数的调用方式,包括传值调用和传址调用,传值调用时形参改变不影响实参,传址调用可通过形参改变实参。还提到函数不可嵌套定义但可嵌套调用,以及函数调用中实参数量和逗号表达式值的相关内容。

(1)函数可以传值调用,此时形参是实参的临时拷贝,即调用 函数中的形参的改变不会影响main函数中实参的值
(2)函数可以传址调用,此时可以通过形参改变实参
函数不可以嵌套定义,可以嵌套调用
(3)函数调用exe((v1,v2),(v3,v4),v5,v6)中的实参是4个
(v1,v2)逗号表达式 值是v2

指的是在函数调用时入参数的而非地,若函数内部对参数重新赋,函数外的全局变量不会相应改变[^1]。以下是不同编程语言解决问题的方法: ### C/C++语言 在C/C++中,可通过指针或引用的方式解决问题。 #### 使用指针 ```c #include <stdio.h> void modifyValue(int *param) { *param = *param + 1; } int main() { int x = 3; modifyValue(&x); printf("%d\n", x); // 输出4 return 0; } ``` #### 使用引用 ```cpp #include <iostream> void modifyValue(int &param) { param = param + 1; } int main() { int x = 3; modifyValue(x); std::cout << x << std::endl; // 输出4 return 0; } ``` ### Python语言 Python的根据入参数的类型选择,若函数收到可变对象(如字典或列表)的引用,就能修改对象的原始;若收到不可变对象(如数字、字符或元组)的引用,就不能直接修改原始对象[^2]。对于不可变对象,可通过返回的方式更新外部变量。 ```python def modifyValue(num): return num + 1 x = 3 x = modifyValue(x) print(x) # 输出4 ``` 对于可变对象,可直接在函数内部修改。 ```python def modifyList(lst): lst.append(4) myList = [1, 2, 3] modifyList(myList) print(myList) # 输出[1, 2, 3, 4] ``` ### JavaScript语言 对于基本数据类型,不同变量之间互不干扰;对于引用数据类型,可修改原始对象。若要修改基本数据类型,可通过返回更新外部变量。 ```javascript function modifyValue(num) { return num + 1; } let x = 3; x = modifyValue(x); console.log(x); // 输出4 let arr = [1, 2, 3]; function modifyArray(arr) { arr.push(4); } modifyArray(arr); console.log(arr); // 输出[1, 2, 3, 4] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值