Je nachdem wen man fragt , sind Zeiger entweder ein Segen oder ein Fluch. Pointers einen Mechanismus für den direkten Zugriff und Modifizieren von Objekten und Code im Speicher. Zeiger werden in vielen Programmiersprachen zur Manipulation von Zeichenketten , Übergabe von Parametern an Funktionen , Umgang mit Arrays von Daten und das Erstellen von verknüpften Listen und andere komplexe Datenstrukturen verwendet . Während Zeiger , die Sie mit einem großen Maß an Flexibilität für die Verwaltung von Speicher und Optimierung Algorithmen gibt es Nachteile . Lernen Zeiger verwenden ist für viele Programmierer schwierig und Debugging Zeiger Probleme ist eine Herausforderung. Optimierung
Pointers einen Performance-Vorteil durch die Möglichkeit, Computer-Speicher direkt zuzugreifen. In einem Computer -Programm, ist der schnellste Weg, den Zugriff auf und Ändern eines Objekts , um direkt auf den physischen Speicher , wo das Objekt gespeichert ist . Diese Technik wird häufig verwendet, um Algorithmen erfordern häufige oder wiederholte Zugriff auf große Mengen von Daten zu optimieren.
Sicherheit
Direkter Zugriff auf den Speicher bedeutet, dass Sie Dinge, die Sie vielleicht nicht sollte. Abhängig von der Sprache , dem Compiler und dem Computer-Plattform , könnte man unabsichtlich (oder absichtlich) Arbeitsspeicher , die nicht bei Ihnen zu übersetzen. Als Ergebnis können Sie überschreiben die kritischen Speicher , ändern Sie den Code von einer laufenden Anwendung , oder führen Sie Ihre Anwendung oder eine andere Anwendung zu verhalten oder unerwartet beendet . Ein häufiger Fehler ist es, über das Ende eines Arrays laufen , Zugriff auf den Speicher über das Ende des Raumes für das Array zugeordnet.
Memory Management
Verwalten der Speichernutzung in einer Anwendung mit Zeigern bietet Flexibilität , sondern ist auch eine lästige Pflicht. Reservieren und Freigeben von Speicher während der Laufzeit benötigt können Sie große Objekte , wie Arrays, schnell und sofort den Speicher frei , wenn es nicht mehr benötigt wird erstellen. Allerdings ist es auch leicht zu Speicherlecks durch Umwidmung eines Zeigers ohne den Speicher freigibt es zum ersten Hinweis wurde erstellt . Müllabfuhr liegt in Ihrer Verantwortung .
Funktionsparameter
Funktionen kann nur einen Wert zurückgeben , aber sie können mehrere Parameter nehmen . Durch die Übergabe in Zeiger auf Variablen als Parameter , kann eine Funktion verwendet, um die Werte dieser Variablen eingestellt werden , und die neuen Werte werden nach der Rückgabe der Funktion bestehen . Die Möglichkeit, den Wert der mehreren Variablen gleichzeitig festzulegen mit einem Funktionsaufruf ist sauber und effizient. Allerdings kann es ein wenig verwirrend zu lesen, weil man nicht sagen kann , ob die übergebenen Variablen in geändert wird oder nicht einfach, indem man den Aufruf der Funktion sein . Sie müssen bei der Funktion Dokumentation schauen, um zu lernen , wie die Funktion verhält
Function Pointers
Pointers sind nicht nur für Objekte im Speicher ; . Können sie auch verwendet werden für Funktionen , so dass eine Funktion , die als Parameter an eine andere Funktion übergeben werden. Eine Funktion Zeiger kann die Adresse eines aus einer Auswahl von Funktionen zugeordnet werden , so dass der Zeiger fungiert als eine Art von Alias . Objektorientierte Programmiersprachen haben die Notwendigkeit für Funktionszeiger mit Vererbung und Polymorphismus eliminiert.
Pointer Confusion
Zeiger sind ein verwirrendes Thema für viele Programmierer , vor allem diejenigen in erfahrenen mit Sprachen, die nicht bieten kann Zeigern und direkten Speicherzugriff . Allerdings führt Persistenz schnell zur Meisterschaft von Zeigern . Pointers werden oft von obskuren Syntax begleitet . Konsequente variable Namenskonventionen kann helfen, Ihren Code besser lesbar . Zum Beispiel gehören gemeinsame Konventionen mit " p_ " oder " ptr_ " als Präfix für Zeigervariable Namen .
Tipps
Verwenden Sie immer die Zuweisung von Funktionen der vorgesehenen Sprache für die Zuteilung Speicher und überprüfen Sie, ob der Speicher , bevor Sie es zugeordnet wurde. Seien Sie vorsichtig mit Speicher -Management und Speicher frei , wenn es nicht mehr benötigt wird . Wenn Sie einen Zeiger zuweisen zu einer neuen Speicher -Adresse , sicherstellen, dass die alten Speicher freigegeben wird oder zu einem anderen Zeiger zugewiesen. Stellen Sie sicher, dass Zeiger in Funktionen erstellt Eigentums gehen auf den übergeordneten Bereich zugeordnet oder dass der Speicher vor dem Verlassen der Funktion freigegeben .