2017-04-17 16 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