数组索引更改

时间:2016-08-03 08:55:26

标签: c arrays pointers

如果我希望变量在任何时刻都等于另一个变量,我使用指针: P =&安培;一个  * p总是等于a,无论是否发生变化。 但是,如果我希望变量与arr [Id]相等但数组的Id,索引总是在我的程序中发生变化,我就无法使用:

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

因为* p2将始终等于初始索引处的数组值,并且如果索引更改* p2不会随之改变。 如何解决此问题并在每次ID更改时更改* p2?

1 个答案:

答案 0 :(得分:1)

让我们看看为什么它适用于第一个实例

p = &a;

此处a有一个地址,比如0x100,此地址存储在变量p中。现在,即使a发生更改,地址也会保持不变,p的值仍为0x100*p将提供a的更新值。

对于第二种情况,

p = &a[d]

如果a0x100d为5且a为char数组,则p将保留值0x105如果索引d发生更改,则阵列中使用的地址将更改,例如如果d2,则要使用的地址为0x102

随着地址的变化,p的值必须更改,并且必须在下次使用之前重新分配。