如果我希望变量在任何时刻都等于另一个变量,我使用指针: P =&安培;一个 * p总是等于a,无论是否发生变化。 但是,如果我希望变量与arr [Id]相等但数组的Id,索引总是在我的程序中发生变化,我就无法使用:
p1=&Id
p2=&arr[*p1]
因为* p2将始终等于初始索引处的数组值,并且如果索引更改* p2不会随之改变。 如何解决此问题并在每次ID更改时更改* p2?
答案 0 :(得分:1)
让我们看看为什么它适用于第一个实例
p = &a;
此处a
有一个地址,比如0x100
,此地址存储在变量p
中。现在,即使a
发生更改,地址也会保持不变,p
的值仍为0x100
。*p
将提供a的更新值。
对于第二种情况,
p = &a[d]
如果a
为0x100
且d
为5且a
为char数组,则p
将保留值0x105
如果索引d
发生更改,则阵列中使用的地址将更改,例如如果d
为2
,则要使用的地址为0x102
随着地址的变化,p
的值必须更改,并且必须在下次使用之前重新分配。