“引用变量”和“将引用用作函数参数”

一.   引用变量

引用变量使用&来声明。&并不是地址操作符,而是类型标示符的一部分。

int main(int argc, char* argv[])

{

int x = 2;

int & y = x;

y = 3;

int m = 4;

printf("x = %d, y = %d, m = %d/n", x, y, m);

printf("x address = %d, y address = %d/n", &x, &y);

 

printf("/ny = m;/n");

y = m;

printf("x = %d, y = %d, m = %d/n", x, y, m);

printf("x address = %d, y address = %d, m address = %d/n", &x, &y, &m);

return 0;

}

执行结果:

x = 3, y = 3, m = 4

x address = 1310588, y address = 1310588

 

y = m;

x = 4, y = 4, m = 4

x address = 1310588, y address = 1310588, m address = 1310580

通过上例可以看出:

xy指向相同的地址,xy的值相等。

m修正y的值,但没有改变y的引用,依然指向x

引用必须赋初值,并且不能改变;所以int & y = x;等价于int * const py = &x;

引用y和表达式(*py)扮演了相同的角色。

 

二.   将引用用作函数参数

引用经常被用于函数参数,使得函数中的变量名称为调用程序中的变量的别名。这种按照引用传递可以直接访问调用函数中的变量。

int main(int argc, char* argv[])

{

        int x = 10;

        int y = 20;

        printf("x = %d, y = %d/n", x, y);

        swapref(x, y);

        printf("/ncall swapref(x, y);/n");

        printf("x = %d, y = %d/n", x, y);

        return 0;

}

 

void swapref(int &x, int &y) {

        int temp = x;

        x = y;

        y = temp;

}

执行结果:

x = 10, y = 20

 

call swapref(x, y);

x = 20, y = 10

 

如果向swapref(x +2 y)传递这样的参数,编译器会给出错误信息,因为x+2并不是变量。但在参数为const引用时,C++却允许这样做,此时仅仅是使用变量,并不能对其进行赋值操作。

int main(int argc, char* argv[])

{

        int x = 5;

        int y = square(x+1);

        printf("x = %d, the result = %d/n", x, y);

        return 0;

}

 

int square(const int &  x) {

        return x*x;

}

执行结果:x = 5, the result = 36

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值