C ++ - 将变量赋值给另一个变量并将变量赋值给引用变量有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++ - 将变量赋值给另一个变量并将变量赋值给引用变量有什么区别?相关的知识,希望对你有一定的参考价值。

说我有:

int a = 1
int b = a
int& c = a

bc有什么区别? ba的单独副本吗?

答案

不同之处是:

  1. b是值的副本 - >正确。其中b有自己的内存地址,它存储的值为b = a的值。它只是一个变量的赋值。
  2. c不仅仅复制a的值,而是完全代表a。在你做了int&c = a之后;现在我们有2个人,但同名。并且您可以完全控制其他名称c。

令人惊讶的是,您可以查看以下代码

int main()
{
    int a =2;
    int b =a;
    int&c =a;
    int d = 3;
    c =d;
    cout <<"a="<<a<<" b="<<b<<" c="<<c<<endl;
}

将打印

a=3 b=2 c=3
另一答案

这是三者之间的区别。当您将b指定为等于a时,您确实正在创建一个sperate副本。但是,如果你要修改一个,那么b将保持不变。例如,如果要将a增加到2然后打印结果,则a将等于2,但b仍将等于1。另一方面,由于c被初始化为对a的引用。

每当更改其值时,c也将更改其值。您还可以通过更改c的值来更改a的值。有关指针和引用的更多信息,请阅读本文http://www.cplusplus.com/doc/tutorial/pointers/

下面是一些示例代码

#include <iostream>

int main() {
    int a = 1;
    int b = a;
    int &c = a;

    std::cout << " a = " << a << ", b = " << b << ", and c = " << c << std::endl;
    a++;
    std::cout << " a = " << a << ", b = " << b << ", and c = " << c << std::endl;
}

输出:

a = 1, b = 1, and c = 1
(after increment) a = 2, b = 1, and c = 2

以上是关于C ++ - 将变量赋值给另一个变量并将变量赋值给引用变量有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何一次给一个数组变量赋值

C语言中如何一次给一个数组变量赋值

C# 集合怎么赋值给另一个集合

C语言 怎么把字符数组中的字符赋值给字符变量

如何通过JNI将java中的对象的地址赋值给c++指针变量

在C语言中赋值运算符有啥作用?