2016-08-03 9 views
0

Wenn ich möchte, dass eine Variable zu jeder anderen Variable gleich bin, verwende ich einen Zeiger: p = & a * p ist immer gleich a, unabhängig davon, ob eine ändert. Allerdings, wenn ich eine Variable, um gleich mit arr [Id], aber die Id wollen, Index des Arrays, ändert sich immer in meinem Programm kann ich nicht verwenden:Array-Index ändern

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

weil * p2 immer sein wird, gleich dem Wert des Arrays am initialen Index, und wenn sich der Index ändert, * p2 wird sich damit nicht ändern. Wie kann ich dieses Problem beheben und * p2 bei jeder Änderung der Id ändern?

+0

afaik, keine Möglichkeit es zu tun – Danh

+2

XY Problem hier, denke ich. Was versuchst du wirklich zu erreichen? Wegen 'p2 = arr' und' p2 [changing_id] 'kann hier die Lösung sein. – LPs

Antwort

1

Mal sehen, warum es für die erste Instanz funktioniert

p = &a; 

Hier a eine Adresse hat, sagen 0x100, und diese Adresse wird in der Variablen p gespeichert. Jetzt, selbst wenn sich a ändert, bleibt die Adresse gleich, und der Wert ist immer noch 0x100. *p gibt den aktualisierten Wert von a an.

Für den zweiten Fall,

p = &a[d] 

Hier, wenn a0x100 und d 5 ist und a ist ein char array, p dann 0x105 den Wert halten, wenn Index d ändert, dann verwendet werden, die Adresse, an im Array wird sich ändern, z wenn d2 ist dann die Adresse zu verwenden 0x102

Da die Adresse ändert, wird der Wert von p ändern muß, und es muss vor dem nächsten Einsatz neu zugewiesen werden.