C++ - 将一个变量分配给另一个变量和将变量分配给引用变量有什么区别?
C++ - What's the difference between assigning a variable to another variable and assigning a variable to a reference variable?
假设我有:
int a = 1
int b = a
int& c = a
b
和c
有什么区别?b
是a
的单独副本吗?
区别在于:
- b 是值的副本 -->正确。其中 b 有自己的内存地址,它在其中存储其值 b = a 的值。它只是一个变量的赋值。
- c 不仅复制 a 的值,而且完全表示 a。所以在你做了int&c = a之后;现在我们有2个人,但名字相同。并且您可以通过其他名称 c 完全控制 a。
令人惊讶的是,您可以使用以下代码进行检查
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 副本。但是,如果您要修改 a,则 b 将保持不变。例如,如果要将 a 递增到 2,然后打印结果,则 a 将等于 2,但 b 仍将等于 1。另一方面,由于 c 被初始化为对 a 的引用。
每当 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++:如何将 char 变量分配给向量<char>并访问该向量的元素进行比较?
- 将局部方法变量分配给类指针
- 类构造函数中的静态成员变量分配
- 如果条件语句中的变量分配
- C++ - 将一个变量分配给另一个变量和将变量分配给引用变量有什么区别?
- 需要帮助了解指针变量分配
- 从值捕获的变量分配到lambda参数时,GCC编译器分割故障
- 将非按引用变量分配给返回按引用的函数,反之亦然
- 通过结构指针访问结构变量分配错误数据
- 分段故障(核心倾倒)变量分配
- 在名称空间之外的C 中的外部变量分配值