3 Stimmen

Zeigerarithmetik

Ich versuche, die Zeigerarithmetik beim Umgang mit Arrays zu verstehen. Es scheint mir, dass sie für den schnellen Zugriff auf Arrays verwendet werden, aber vielleicht bin ich völlig falsch. Ich meine, wenn wir dies haben:

*(myArray + 1), wir gehen zur nächsten Stelle im Array, denke ich.

Ich konvertiere gerade einige C++ nach C# und die C++ hat Zeiger-Arithmetik gehen auf. Ich brauche die C# vollständig verwaltet werden, so versuchen, herauszufinden, wie die Zeiger Zeug zu C# zu übersetzen.

Vielen Dank für alle Ideen.

David

2voto

David Heffernan Punkte 585606

*(myArray + 1) ist genau gleichbedeutend mit myArray[1] . Letzteres sollten Sie immer vorziehen. Es ist einfacher zu lesen und es gibt keinen Unterschied in der Leistung.

2voto

Malmi Punkte 387

Vielleicht hilft das: http://www.cplusplus.com/doc/tutorial/pointers/

Und *(meinArray +1) ist gleich meinArray[1].

2voto

Adam S Punkte 3025

Wenn Sie mit Zeigern nicht ganz vertraut sind, wird Ihr Leben in C# etwas einfacher sein. Zunächst zu dem Code, den Sie gepostet haben:

`*(myArray + 1)`

Ihr Verständnis ist grundsätzlich richtig, Sie dereferenzieren das 1. Element in myArray . Oder mit anderen Worten, der Zugang zu myArray[1] .

Wenn Sie zu C# wechseln, verwenden Sie wahrscheinlich eine generische List<T> wobei T ist der Typ Ihrer myArray . Eine ähnliche Syntax steht Ihnen auch zur Verfügung - myArray[i] sowie viele weitere Funktionen auf der Website List .

2voto

Retief Punkte 3161

Unter der Annahme, dass myArray zeigt auf den Anfang eines Arrays (wie es der Name schon sagt, sollte es das auch), *(myArray + 1) ist das Gleiche wie myArray[1] und letztere wird aus Gründen der Lesbarkeit bevorzugt.

Der kniffligere Teil der Umwandlung von Zeiger-Arithmetik-Code ist, wenn Sie einen Zeiger auf einen beliebigen Teil des Arrays verwenden - *(current + 1) wobei current ist ein Zeiger auf ein beliebiges Element in einem Array. Hier müssen Sie das ursprüngliche Array und den Index des Elements innerhalb des Arrays herausfinden, das current zeigt auf. Angenommen, es ist myArray y i wird der obige Code wie folgt übersetzt myArray[i+1]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X