AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Was genau sind Pointer?

Ein Thema von Nalincah · begonnen am 18. Mai 2004 · letzter Beitrag vom 23. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

Was genau sind Pointer?

  Alt 18. Mai 2004, 16:54
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.
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Was genau sind Pointer?

  Alt 18. Mai 2004, 17:10
Zitat von General2004:
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.
Du beantwortest deine Frage doch selbst. Ein Pointer ist eigentlich eine normale Variable, an deren Adresse die Speicheradresse einer anderen Variablen liegt. Mit Hilfe von Dereferenzierungsoperatoren (ich hasse dieses Wort ) kannst du dann wieder auf die eigentliche Variable zugreifen:
Delphi-Quellcode:
var
  i: Integer;
  pi: ^Integer;
begin
  i := 5;
  pi := @i;
  ShowMessage('Adresse '+IntToStr(pi)+'; Wert '+IntToStr(pi^));
end;
Ich hoffe das bringt dich weiter.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Was genau sind Pointer?

  Alt 18. Mai 2004, 17:11
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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Was genau sind Pointer?

  Alt 19. Mai 2004, 06:00
http://www.delphipraxis.net/internal...hlight=pointer
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#5

Re: Was genau sind Pointer?

  Alt 22. Mai 2004, 12:49
wozu braucht man pointer?

ich mein, wenn man ne variable hat, auf die der pointer verweist, kann man auch direkt die variable verwenden, oder?

oder hab ich einen kapitalen denkfehler gebaut?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Was genau sind Pointer?

  Alt 22. Mai 2004, 13:05
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: Was genau sind Pointer?

  Alt 22. Mai 2004, 15:27
Zitat von Chewie:
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.
Na dann erklär mir mal wozu es var-Parameter in Delphi gibt? In C/C++ und anderen Programmiersprachen ist deine Aussage richtig, aber in Pascal/Object Pascal wohl eher nicht..
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Was genau sind Pointer?

  Alt 22. Mai 2004, 15:45
Zitat von alcaeus:
Na dann erklär mir mal wozu es var-Parameter in Delphi gibt?
Var-Parameter sind nur eine "Gefälligkeit" des Compilers. Folgende zwei Funktionen sind, was den erzeugten Maschinencode angeht, identisch:
Delphi-Quellcode:
function IAmAFunction(var Something: Integer): Boolean;
function IAmTheSameFunction(Something: PInteger): Boolean;
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#9

Re: Was genau sind Pointer?

  Alt 22. Mai 2004, 15:50
Zitat von Chewie:
Folgende zwei Funktionen sind, was den erzeugten Maschinencode angeht, identisch:
Delphi-Quellcode:
function IAmAFunction(var Something: Integer): Boolean;
function IAmTheSameFunction(Something: PInteger): Boolean;
Ja. Sie sind es aber nicht mit:
function IAmAnotherFunction(Something: Integer): Boolean; 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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#10

Re: Was genau sind Pointer?

  Alt 22. Mai 2004, 19:16
Zitat:
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.
versteh ich nicht...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz