Pointers til Søren Klit Lambæk

Tags:    programmering

<< < 12 > >>
Hej..
Hvad er egentlig formålet med pointers, og hvorfor er de gode at have?
Altså hvad er smart ved dem? Der er jo ikke noget smart, ved at den "bare" peger på en adresse i hukommelsen :S

Med Venlig Hilsen: CHadi




Der vil jeg nu ikke mene. Ved at f.eks. sætte en pointer op på video-lageret kan du skrive direkte til skærmen, frem for at gå gennem diverse interrupts(kald).
-AH



Lad os nu sige du har 10 mb data i hukommelsen, ville du så:

a) kopiere hele molevitten over til et nyt sted?

eller

b) lave en reference til de 10mb data?

Jeg ved godt hvad jeg vil...

Og når du så henvender spørgsmålet til Søren, så går jeg ud fra at det er noget med textures or the like, samme ting igen, det fylder meget, og hvis du skal bruge 16 textures? hvorfor så loade samme fil 16 gange ind i 16 forskellige variabler? når du kan have 1 variabel(eller adresse) hvor den tekstur ligger, og du så bare kan referere den...

Casper

[Redigeret d. 20/11-03 15:55:29 af Casper Steinmann]



Lad os nu sige du har 10 mb data i hukommelsen, ville du så:

a) kopiere hele molevitten over til et nyt sted?

eller

b) lave en reference til de 10mb data?

Jeg ved godt hvad jeg vil...

Og når du så henvender spørgsmålet til Søren, så går jeg ud fra at det er noget med textures or the like, samme ting igen, det fylder meget, og hvis du skal bruge 16 textures? hvorfor så loade samme fil 16 gange ind i 16 forskellige variabler? når du kan have 1 variabel(eller adresse) hvor den tekstur ligger, og du så bare kan referere den...

Casper

[Redigeret d. 20/11-03 15:55:29 af Casper Steinmann]


Grunden til at jeg henvender spøgrsmålet til Søren, er fordi jeg lige chattede med ham, og så spurgte jeg ham om dette spørgsmål. Han sagde så, at jeg skulle oprette en tråd på udv.dk, da mangle vil have gavn af det. For jeg ved, at der er mange som har samme problem, med at forstå hvad meningen er med pointers!
Med Venlig Hilsen: CHadi




Hejsa... Pointers indeholder adresser til data i din computers RAM. Der findes udefinerede pointers som ganske enkelt hedder pointer. Og så er der definerede pointers til varianter, konstanter og typer. Formålet med pointers er at gøre dine applikationer neget hurtigere og mere effektive. Specielt, hvis du arbejder med meget data og skal bruge det samme data til forsklellige procedure, komponenter eller applikationer kan du bruge pointers til at pege, i stedet for at kopiere dataerne.

procedure TForm1.FormCreate(Sender: TObject);
var
S1, S2 : string;
P : ^string;
begin
S1 := 'Chadi';
S2 := S1; //Kopier data (Fylder dobbelt saa meger i Ramen)

ShowMessage(S1+' Kopiert');

P := @S1;
S2 := P^; //Peger til S1 - Ingen kopiering!!!

ShowMessage(S1+' Pointer');
end;




Casper har forklaret meget godt. Textures fylder meget. Så det vil være umuligt at lave store spil hvis ikke man kan benyttte pointers...




Grunden til at jeg henvender spøgrsmålet til Søren, er fordi jeg lige chattede med ham, og så spurgte jeg ham om dette spørgsmål. Han sagde så, at jeg skulle oprette en tråd på udv.dk, da mangle vil have gavn af det. For jeg ved, at der er mange som har samme problem, med at forstå hvad meningen er med pointers!
Med Venlig Hilsen: CHadi


Well, pointers er(se bare sørens eksempel) uhyre avanceret, og man har ikke grund til, at kunne administrere dem for at være en god Delphiprogrammør, men det kan hjælpe én med en del ting, især det med databehandling, netop pga. at data ikke flyttes, men manipuleres på stedet.

Du kan læse en artikkel som jeg har brugt i forbindelse med pointere:

http://www.pythia.dk/artikler/vis_artikel.php?id=18

Casper



Folk er godt nok hurtige til svare her på udvikleren :)...

af definere en pointer til en variant bruger vi ^ foran varianten ^string. For at give adressen til en pointer bruger vi @ P := @S1. For at hive dataerne frem fra adressen der blevet peget til bruger vi ^ bagefter varianten S2 := S1^....



Hejsa... Pointers indeholder adresser til data i din computers RAM. Der findes udefinerede pointers som ganske enkelt hedder pointer. Og så er der definerede pointers til varianter, konstanter og typer. Formålet med pointers er at gøre dine applikationer neget hurtigere og mere effektive. Specielt, hvis du arbejder med meget data og skal bruge det samme data til forsklellige procedure, komponenter eller applikationer kan du bruge pointers til at pege, i stedet for at kopiere dataerne.

procedure TForm1.FormCreate(Sender: TObject);
var
S1, S2 : string;
P : ^string;
begin
S1 := 'Chadi';
S2 := S1; //Kopier data (Fylder dobbelt saa meger i Ramen)

ShowMessage(S1+' Kopiert');

P := @S1;
S2 := P^; //Peger til S1 - Ingen kopiering!!!

ShowMessage(S1+' Pointer');
end;


Mange tak for jeres svar. Det er altid godt med et eksempel.. men søren.. du nævner definerede pointers, og udefinerede... Kan du ikke vise et eksempel, hvor du viser en defineret og en udefineret pointer?
Og ja.. i har ret.. det gør det hurtiger at pege på det sted hvor tingene ligger i hukommelsen...
Men hvis nu man ville vise hvad CutBoard indholdte, kunne man så lave en pointer som henviser til Cutboard? Og hvordan finder man adressen på Cutboard? (Delphi)


Med Venlig Hilsen: CHadi


[Redigeret d. 20/11-03 16:09:42 af CHadi]



Jeg synes at pointers til varianter, konstanter og typer er lette at håndtere. Men udefinerede pointers kan godt være lidt tricky, en gang imellem. Meget godt er at vide, at strings, arrays faktisk er pointers. Det er derfor vi kunne sende en array som pointer, da vi kopierede RGB dataerne til OpenGL i min artikel....



CutBoard... er ikke helt med :)



<< < 12 > >>
t