Zeiger ?

Hab mal 2 Beispiele dargestellt.

Meine Frage dazu wäre:
1.Worin besteht der Unterschied ?

Beispiel 1
Code:
  AnsiString RW;
  AnsiString *zeiger;
  zeiger = &RW;
  
  *zeiger = "hallo";
  Label1->Caption = RW;

Beispiel 2
Code:
  AnsiString RW;
  RW = "hallo";
  
  Label1->Caption = RW;
 
Zuletzt bearbeitet:
Beim BSP.1 Definierst du genau so wie bei 2. eine "AnsiString" Variable
Beim 1. erstellst du dann jedoch einen Zeiger, der nur die ihm zugewiesene Adresse speichert, weist ihm die Adresse der Variable zu, und veränderst dann indirekt über den Zeiger den Wert von der Variable und gibst diese Variable dann aus.
Bei 2. definierst du die Variable direkt und gibst sie danach aus...

Netto kann man sagen, dass es in diesem Beispiel nur den Unterschied gibt, dass du die 4? Byte des Zeigers auch noch beschrieben hast.

Bei diesen Beispielen, ist es (wie meistens) nicht sinnvoll Zeiger zu brauchen, weil mann dann der gefahr ausgesetzt ist, dass man mithilfe des Zeigers unabsichtlich die Daten der Zielvariable überschreibt.

Der eizige Fall, in dem ich bisher Zeiger benutzt habe, um Variabeln zu definieren, ist bei Unterfunktionen, welche mehrere Werte zurükgeben:
Code:
void unterfunktion(int *a, int *b, Ansistring *c)
{
   *a=2* (*a);
   *b=2*(*b)+(*a);
   *c="HaaHaaHaa!";
}



//Hauptfunktion:

__fastcall Form1......Button1Click(......)
{
   
   int x = 3, y = 4;
   AnsiString z = "Los Gehts!";

   //Werte:   x=3   y=4   z=Los Gehts!

   unterfunktion(&x,&y,&z);

    //Werte:   x=6   y=11   z=HaaHaaHaa!

}

Alles klar?:rolleyes:
 

Neue Beiträge

Zurück