c和c++中的传值和传地址的理解

所有的参数传递本质上都是传值。传地址只不过传的是变量的地址而已,地址也是一个值。

1.传值。直接传变量的值。值拿来之后,变量就和值所在的函数没有关系了

  1 #include <string.h>
  2 #include <stdio.h>
  3 
  4 
  5 void passByValue(int iParam)
  6 {
  7     printf("I'm the value. value:%d\n", iParam);
  8     iParam = 10000;
  9     printf("valueChanged:%d.\n", iParam);
 10 }
 11 
 12 
 13 
 14 int main()
 15 {
 16     int iNum = 100;
 17     passByValue(iNum);
 18     printf("iNum:%d\n", iNum);
 19     return 0;
 20 }

编译后打印的结果:

I'm the value. value:100
valueChanged:10000.
iNum:100

传进来的是iNum=100, 在passByValue里面改变了iParam=10000。出来了之后iNum还是100。这就是传值的局限性,它不能改变原始传入的变量的值。

2.传地址。也就是不传变量了,但是传变量的地址。知道地址了,就能顺着地址找到这个变量

  1 #include <string.h>
  2 #include <stdio.h>
  3 
  4 
  5 void passByAddress(int *iParamAddress)
  6 {
  7     printf("I'm the addre
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值