2017-04-17 43 views
-9

后做:设置两个变量* always * equal?

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++有一些类似的功能(引用),如我正在寻找的。

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

+10

C和C++是具有不同特征的不同的语言。选择你使用的一个! – Olaf

+0

使它们都指向相同的位置。既可以是指针也可以是分配内存,或者是指向一个指针(但语法不同,因为你必须记住去使用它时指针的指针) – Donnie

+2

我看你已经修正了C++,因为你使用了' cout'流和'<<'运算符。请删除C标签。对于C++,您可以使用@CoryKramer –

回答

7

如果你问有关C++,你可以使用引用

int a = 2; 
int& b = a; 

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

否则,如果两者都int类型,每个变量包含在它自己的内存位置了自身的价值,并不“知道”另一个,也不会更新一个修改另一个。

+2

C不支持引用。 – Olaf

+2

@Olaf我已经更新了我的答案,以说明这是用C++编写的。如果OP声明他们只对C感兴趣,我会删除我的答案。 – CoryKramer

+0

是的,但因为它看起来OP想要一些不可能的东西。 – Olaf

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