值传递、引用传递、地址传递辨析

写在前面:

其实这是大一的知识,但是很久了也有一点淡忘,加上复习编译原理又捡起来看了看,写个简单的程序帮助理解吧。

值传递、引用传递、地址传递:

#include<iostream>
//值传递
int get_val(int arg){
    arg+=1;
    return arg;
}
//引用传递
int get(int &arg){
    arg+=1;
    return arg;
}
//地址传递
int get(int *arg){
    *arg+=1;
    return *arg;
}
//入口

int main(){
    int a=0;
    int b=0;
    int c=0;
    get(a);
    std::cout<<" 引用传递 -->原变量"<<a<<std::endl;
    get_val(b);
    std::cout<<" 值传递 -->原变量"<<b<<std::endl;
    get(*c);
    std::cout<<" 地址传递 -->原变量"<<c<<std::endl;
}

程序输出:

     引用传递 -->原变量1
     值传递 -->原变量0
     地址传递 -->原变量

解析:

  • 值传递只是将变量地址中存放的值赋给了新开辟的局部变量。

  • 引用传递,引用其实是变量的别名,就像 小明在学校叫 王小明,在家里叫明明一样,都指的是小明这个人。我在路上叫明明或者王小明他都会答应。 引用传递实际上是将原变量作为局部变量放入了函数中

  • 地址传递是将原变量的地址作为参数传入函数,对地址的相关操作其实作用在原变量上

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值