加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 作为函数参数引用?

发布时间:2020-12-16 03:14:28 所属栏目:百科 来源:网络整理
导读:我的参考资料有问题. 考虑以下代码: void pseudo_increase(int a){a++;} int main(){ int a = 0; //.. pseudo_increase(a); //..} 这里,变量a的值不会随着它的克隆或副本的传递而增加,而不是自身变量. 现在让我们考虑另一个例子: void true_increase(int a
我的参考资料有问题.
考虑以下代码:
void pseudo_increase(int a){a++;}  
int main(){  
    int a = 0;
    //..
    pseudo_increase(a);
    //..
}

这里,变量a的值不会随着它的克隆或副本的传递而增加,而不是自身变量.
现在让我们考虑另一个例子:

void true_increase(int& a){a++;}
int main(){  
    int a = 0;
    //..
    true_increase(a);
    //..
}

这里据说a的价值会增加 – 但为什么呢?

调用true_increase(a)时,将传递a的副本.这将是一个不同的变量.因此& a将与a的真实地址不同.那么增加的价值怎么样?

在我错的地方纠正我.

解决方法

请考虑以下示例:
int a = 1;
int &b = a;
b = 2; // this will set a to 2
printf("a = %dn",a); //output: a = 2

这里b可以像a的别名一样对待.无论你分配给b,都将分配给a(因为b是对a的引用).通过引用传递参数没有什么不同:

void foo(int &b)
{
   b = 2;
}

int main()
{
    int a = 1;
    foo(a);
    printf("a = %dn",a); //output: a = 2
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读