![]() |
Was genau sind Pointer?
Wer kann mir genau sagen was Pointer sind? Oder mir zeigen wo ich ne Erklärung finde.
Ich weiß nur das der Pointer einer Variable auf die Adresse der jeweiligen zeigt. |
Re: Was genau sind Pointer?
Zitat:
Delphi-Quellcode:
Ich hoffe das bringt dich weiter.
var
i: Integer; pi: ^Integer; begin i := 5; pi := @i; ShowMessage('Adresse '+IntToStr(pi)+'; Wert '+IntToStr(pi^)); end; |
Re: Was genau sind Pointer?
Moin Sebastian,
ich finde Deine Erklärung war schon fast vollständig. Du müsstest bloss unterscheiden, ob die Variable selber der Pointer auf den Wert ist (z.B. bei Objekten oder Variablen vom Typ String), oder den Wert unmittelbar enhält (z.B. bei Variablen vom Typ integer). Beispiel:
Delphi-Quellcode:
var
iWork : integer; sWork : string; pWork : pointer; begin iWork := $12345678; pWork := @iWork; // Jetzt enthält pWork die Adresse von $78, da diese Werte bei // Intel CPUs in umgekehrter Reihenfolge abgelegt werden, hier // als 78563412 ShowMessage(IntToHex(Byte(pWork^),2)); inc(integer(pWork)); ShowMessage(IntToHex(Byte(pWork^),2)); sWork := 'string'; // sWork enthält den Pointer auf einen String, deshalb nur ein // Typecast. pWork := PChar(sWork); ShowMessage(Char(pWork^)); // und bei HugeStrings liegt vor dem eigentlichen Inhalt die Länge // (integer Wert, deshalb vier Byte zurück) dec(integer(pWork),4); ShowMessage(IntToStr(integer(pWork^))); end; |
Re: Was genau sind Pointer?
|
Re: Was genau sind Pointer?
wozu braucht man pointer?
ich mein, wenn man ne variable hat, auf die der pointer verweist, kann man auch direkt die variable verwenden, oder? :gruebel: oder hab ich einen kapitalen denkfehler gebaut? :gruebel: :gruebel: :gruebel: |
Re: Was genau sind Pointer?
Ein Vorteil ist z.B., dass man zwei Zeigervariablen haben kann, die auf einen Speicherbereich verweisen.
Und nur per Zeiger kann man Parameter an eine Funktion/Prozedur übergeben, die in der Funktion verändert werden und dessen Änderungen im Hauptprogramm erhalten bleiben. |
Re: Was genau sind Pointer?
Zitat:
|
Re: Was genau sind Pointer?
Zitat:
Delphi-Quellcode:
function IAmAFunction(var Something: Integer): Boolean;
function IAmTheSameFunction(Something: PInteger): Boolean; |
Re: Was genau sind Pointer?
Zitat:
Delphi-Quellcode:
Das nur zur Verdeutlichung, weil in meinem Fall eine Kopie der originalen Variable angelegt wird, die innerhalb der Methode veränderbar ist, sich aber nicht auf den Wert der ursprünglichen Variable auswirkt.
function IAmAnotherFunction(Something: Integer): Boolean;
|
Re: Was genau sind Pointer?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz