设置两个变量*总是*相等?

时间:2017-04-17 16:39:59

标签: c++

完成后:

int a = 2;
int b = a;
a = 4;

b仍然是2,这是非常合乎逻辑的,在大多数情况下非常有用。

ab是否有任何方法可以始终保持相同的值,这意味着当一个更改时,其他也得到相同的价值?

例如:

//magic I am looking for
a = 2;
// now also b is equal to 2
b = 3;
// now also a is equal to 3

最接近我可以得到(你可以忽略它,它可能不会在任何地方领先):

int a =2;
int *ptr = &a;
int *b = ptr;
a = 9;
cout << *b;

*b为9,将*b更改为9也会a == 9

但是 a*b不是相同的数据类型(int和指针int),我似乎无法让它在列表中工作。

编辑:我没有指定语言原因我不确定哪一个可能存在。看起来C ++有一些类似的功能(参考),就像我正在寻找的那样。

我唯一担心的是,引用也不能在数组中工作,就像上面的解决方案一样。

2 个答案:

答案 0 :(得分:7)

如果您询问C ++,可以使用参考

int a = 2;
int& b = a;

a = 4;  // now b also == 4

否则,如果两者都是int类型,则每个变量在其自己的内存位置包含自己的值,并且不知道&#34;知道&#34;关于另一个,也不会更新一个修改另一个。

答案 1 :(得分:1)

如果您询问C,则不能以这种方式将两个变量链接在一起。

但是,您可以为该变量创建多个指针。然后,当您取消引用任何指针时,您会看到反映的结果。

int a = 1;
int *b = &a;
int *c = &a;

int a = 2;
printf("*b=%d, *c=%d\n", *b, *c);

输出:

*b=2, *c=2