2016-08-03 58 views
0

如果我想要一個變量在任何時候都等於另一個變量,我使用一個指針: p = & a * p總是等於a,而不管是否有變化。 但是如果我想要一個變量與ARR [ID]相同,但身份證,數組的索引,變化總是在我的程序我不能使用:數組索引的變化

p1=&Id p2=&arr[*p1]

因爲* P2總是會等於初始索引處數組的值,如果索引更改* p2不會隨之改變。 如何解決此問題,並獲得* p2更改每次Id更改?

+0

afaik,沒辦法做到 – Danh

+2

XY問題在這裏,我猜。你真的想達到什麼目的?因爲'p2 = arr'和'p2 [changing_id]'可以成爲這裏的解決方案。 – LPs

回答

1

讓我們來看看爲什麼它一審

p = &a; 

這裏a有一個地址,說0x100,而這個地址存儲在變量p。現在,即使a發生更改,地址仍保持不變,並且p的值仍將爲0x100*p將給出a的更新值。

對於第二種情況,

p = &a[d] 

這裏如果a0x100d是5和a是字符數組,然後p將持有的值0x105如果index d的變化,將被使用,那麼該地址在數組中會改變,例如如果d2然後地址的使用是0x102

由於地址變化,p值將不得不改變,它有在下次使用前重新分配。