AGB  ·  Datenschutz  ·  Impressum  







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

Pointer

Ein Thema von Pseudemys Nelsoni · begonnen am 3. Feb 2004 · letzter Beitrag vom 6. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Pointer

  Alt 3. Feb 2004, 10:22
hoi,

kann mir jemand pointer erklären?(für mich verständlich erklären wenn es geht*G*), ich sehe in ihnen irgendwie kein vorteil. ich weiss nur das sie auf eine adresse zeigen. Ich weiss aber nicht mehr als:

Delphi-Quellcode:
procedure irgendwie;
var
  pi: ^integer;
  i: integer;
begin
  pi^ := Addr(i);
  // toll nun weiss ich das:
  i := 5;
  pi^ := 5;
  //das gleiche sind
end;


und wo ist da denn der vorteil?
Mario
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Pointer

  Alt 3. Feb 2004, 21:38
Der Sinn der Pointer liegt darin, das es [egal] ist was inter jenem steht.

Bsp für Pointer Anwendungen:

- Binärdaten
- Verkettete Listen
- Hierachische Listen (hoffentlich hab ich das richtig geschrieben)
und alles was mir nicht einfällt.

Bsp für Binärdaten:

Delphi-Quellcode:
GetMem(p, 1024);


Byte(p^) := 128;
...


FreeMem(p); // in DOS FreeMem(p, 1024);
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#3

Re: Pointer

  Alt 3. Feb 2004, 21:47
Alles ist eigentlich ein Pointer. selbst wenn du
var
s: string;
hast ist s ein Pointer auf den Anfang des Strings im RAM.

selbst dein vertrautes Form1 ist nur ein Pointer. man kann pointer leicht übergeben ,z.B. in der EnumWindows Prozedur.

man kann einfach Ringspeicher realisieren (also verkettete Listen) und auch ganz einfach Baum- und Netzwerkstrukturen für Daten.
Die DIREKTE verwendung von Pointern ist aber leider etwas heikel ( jeder kennt die Fehler, Access Violation, Read of address ....)
deswegen haben Pointer keinen so guten Ruf bei programmieren.
Power is nothing without TControl
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Pointer

  Alt 3. Feb 2004, 21:49
Du willst was über Pointer erfahren: Kuck dir hier das Video an.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

Re: Pointer

  Alt 3. Feb 2004, 21:56
Da es mich auch interessiert:

Welches Video

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Pointer

  Alt 4. Feb 2004, 10:50
danke, auch wenn ichs immernoch nicht kapiere *g*

@lueckie: video? ^^
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Pointer

  Alt 4. Feb 2004, 11:20
Ich habe den Link vergessen.

http://cslibrary.stanford.edu/104/?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Pointer

  Alt 6. Feb 2004, 18:45
lol, das video is geil

in dem video sah das ganze ja so aus:

Delphi-Quellcode:
var
  x: ^integer;
  y: ^integer;
begin
  x^ := 42;
  y^ := 13; // überschreibt die 42?
end;
wieso überschreibt y denn x? die haben doch garnichts miteinander zu tun oder?

mir sind pointer immernoch nicht klar (wird mir wohl nie klar werden )

überall wo ich sehe das pointer eingsetzt werden könnte ich genauso einfach "normale" variablen nehmen
Mario
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Pointer

  Alt 6. Feb 2004, 19:00
Pointer zeigen ja eigentlich nur auf eine Stelle im Speicher.
Beispiel:
Delphi-Quellcode:
var normalint: Integer;
    zeigerint: ^Integer; //mit "^Integer" machen wir aus Integer einen Zeiger auf einen Integer
begin
  normalint := 5; //der normalen Integervariablen weisen wir jetzt irgendeinen wert zu
  zeigerint := @normalint;
  //um zeigerint wie einen normalen Integer verwenden zu können muss man den Zeiger dereferenzieren - also "zeigerint^" verwenden
  showmessage(inttostr(zeigerint^)); //und wenn wir uns jetzt zeigerint ausgeben lassen sieht man das da 5 rauskommt
  zeigerint^ := 7; //jetzt setzen wir zeigerint auf 7
  showmessage(inttostr(normalint)); //und wenn wir uns jetzt normalint anzeigen lassen steht da auch 7 weil wir ja an die stelle im speicher geschrieben haben wo normalint steht
end;
Ich hoffe es war einigermaßen verständlich, ansonsten nochmal posten was nicht verstanden wurde

und noch nen Beispiel aus nem beitrag den ich zum thema Pointer schonmal in nem thread gepostet hab
Delphi-Quellcode:
var gesamt: Array[0..1] of char;
    byte1, byte2: ^char;
begin
  byte1 := @gesamt[0]; //byte1 auf dein speicher von gesamt[0] zeigen lassen
  byte2 := @gesamt[1]; //byte2 auf dein speicher von gesamt[1] zeigen lassen
  byte1^ := 'a'; //an der stelle im speicher "a" schreiben
  byte2^ := 'b'; //an der stelle im speicher "b" schreiben
  self.caption := gesamt; //und siehe da, in gesamt steht später "ab"
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Pointer

  Alt 6. Feb 2004, 20:52
hoi, das ist sehr gut erklärt, danke

ich hätt noch eine frage jo , und zwar:

Zitat:
byte1 := @gesamt[0]; //byte1 auf dein speicher von gesamt[0] zeigen lassen
byte2 := @gesamt[1]; //byte2 auf dein speicher von gesamt[1] zeigen lassen

wieso haben byte1 und byte2 am ende kein "^" ? setzt man den nur ran bei werte-zuweisungen?

Danke nochmal, ist wirklich gut erklärt.


EDIT:

wäre:

byte1 := @gesamt[0]; //byte1 auf dein speicher von gesamt[0] zeigen lassen

und

byte1^ := gesamt[0]; //byte1 auf dein speicher von gesamt[0] zeigen lassen

nicht das gleiche?
Mario
  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 07:40 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