C++指针与引用

从函数参数传递说起:

  • 按值传递
int addition(int x, int y){
     return(x + y)
}

int main(){
     int x = 5, y = 2, z;
     z = addition(x, y);
     return 0;
}
  • 按地址传递
void duplicate (int& a, int& b){
         a*=2;
         b*=2;
}

int main (){
     int x=1, y=3;
     duplicate (x, y);
     cout << "x=" << x << ", y=" << y ;
     return 0;
}
按值传递,顾名思义,函数形参仅仅得到变量传来的值,函数的任何操作并不对变量产生任何变化;按地址传递,他的定义方式与按值传递不一样(注意其在main函数中用法),形式参数带有一个地址符号,这种传递方式,将变量本身传递进函数,所以函数能对参数进行直接操作。
以上是由指针联想到的,下面说说指针,请看下面的例子
//省略头文件即命名空间等
void test(int *p)
{
    int b=2;
    p=&b;
    cout<<p<<endl;
}

int main(void)
{
    int a=10;
    int *p=&a;
    cout<<p<<endl;
    test(p);
    cout<<p<<endl;
    return 0;
}
其结果:
第一行输出和第三行输出的结果相同:0038f928,第二行输出:0038f834。从这里可以看出,当指针作为参数进行传递时传递的也只是一个值,只不过该值只一个地址,因此对于形参的改变并不影响实参。

函数参数传递,核心是看清楚传递的是地址还是值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值