Follow

Mal so an die Programmierer hier gefragt: Wofür Pointer? Und wann?
Meine Vermutung durchs Lesen:
Ich geb ner Funktion direkt die Adresse einer Variable als ne Kopie weils schneller geht bspw.

function rechnen(a, b, c:Integer) :integer;
begin
result:=a+b+c
end;

dann aufruf
irgendwo d:=rechnen(@a,@b,@c);

sollte ja schneller gehen als d:=rechnen(a, b, c) ;

Aber ka ob das überhaupt so geht oder ob man statt "@a" "^PointerDerAufaZeigt" nehmen muss.

@Themanwhoisit Was ist das für eine Sprache in deinem Beispiel?

Ressourcen (RAM+CPU) sparen durch verweisen statt kopieren ist ein Aspekt. Ein weiterer ist der Unterschied, ob by Value (Kopie) oder by Reference (Pointer) übergeben wird. By Reference kann die Funktion den Inhalt der Variable ändern und die Änderungen sind dann auch im aufrufenden Kontext gültig. By Value wird in der Funktion nur die lokale Kopie geändert, ein eventuelles Ergebnis muss also returned werden.

@Themanwhoisit Außerdem lassen sich einige Datenstrukturen nur mit Pointern lösen, so ziemlich alle die dynamisch vergrößert und verkleinert werden können. Das ist aber häufig schon so implementiert dass du das bei der Anwendung nicht mitbekommst.

@Themanwhoisit Pointer haben, wie du richtig bemerkt hast, den Vorteil, dass es wesentlich schneller ist. In deinem Beispiel kommt das aber nicht so richtig zur Geltung, denn Integer sind ja "klein" und daher schnell zu kopieren. Aber stell dir zum Beispiel mal ein Array vor, das eine Sekunde Audio repräsentiert, bei 44,1khz hast du also 44100 integer werte. Das ständig zu kopieren, ist schon teuer.

@Themanwhoisit Davon abgesehen kann man aber mit Pointern auch "von überall aus" auf ein Objekt zugreifen. Zum Beispiel kann deine Anwendung ein GUI-Objekt haben, in dem verschiedene Dinge als Attribut abgelegt sind. Jetzt kannst du den Pointer auf dieses Objekt in deiner Anwendung umherreichen und kannst damit das GUI-Objekt manipulieren, ohne es global zu machen.

Sign in to participate in the conversation
Mastodon

Nunja... äh... Kekse, Animu usw.