Einzelnen Beitrag anzeigen
Alt 09.04.2002, 03:01   #6
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

@Hamster Riot wie alle anderen:

* bedeutet bei der Variablendefinition, daß eine Zeiger- - auch Pointer- - Variable genannt angelegt wird, die auf den Datentyp zeigt der vor dem '*' Zeichen steht.

Das Beispiel dazu lautet wie folgt:

Also kurz mal durchblasen:

int integer_variable;

eine Zeigervariable auf ein Integerdatum definiert man allerdings so:

int * zeiger_auf_eine_integer_variable;

bzw.

int * pointer_auf_eine_integer_variable;

Pointer ist lediglich der englische Ausdruck für das Wort 'Zeiger' im Deutschen.

Was eine Zeigervariable macht ist einfach:

Man speichert in ihr eine Adresse des Computerspeichers, sonst nichts !

An dieser Adresse - auf die so eine Zeigervariable verweist - stehen dann (eine Abfolge von) Daten, oder EIN Datum. Wie eben - beispielsweise - ein Wert vom Typ int.

Die Verwendung von * und & im Programmcode und nicht bei der Definiton von Zeigern bedeutet nachfolgend das:

*zeigervariable liefert den Wert der Daten / des Datums, auf das die Adreßvariable 'zeigervariable' verweist.

&integervariable liefert die Adresse der Variable 'integervariable'.

int x,*zeiger_auf_x;

x=2;

zeiger_auf_x= &x;

*zeiger_auf_x= 3;

printf("%d\n",x); /* in x steht bereits 3 obwohl x nur indirekt - eben über einen Zeiger (=Zeigervariable) - verändert worden ist */

Bei Übergabeparametern bedeutet das Zeichen '&' (=Ampersand) die Deklaration einer sogenannten Referenz. Eine Referenz bedeutet einen Zeiger zu übergeben und in genau eben in dieser selben Funktion, in der diese 'Referenz' als einer der Übergabeparameter deklariert wurde, diesen Referenzübergabeparameter so zu verwenden wie in der aufrufenden Funktion.

Ein nachfolgendes Beispiel:

void double_it (int &variable)
{
variable *= 2;
}

void main (void)
{
int zentimeterlaenge;

zentimeterlaenge= 100;

printf("Länge in Zentimetern: %d\n",zentimeterlaenge);

double_it(zentimeterlaenge);

printf("doppelte Länge in Zentimetern: %d\n",zentimeterlaenge);
}

D.h. das Ampersand '&' bedeutet bei der Verwendung innerhalb einer Funktion 'Adresse von' und beim Deklarieren eines Übergabeparameters 'Variable von außerhalb übernommen'.

Das Zeichen '*' bedeutet beim Definieren von Variablen 'Zeiger auf ...' ( ... Datentyp ) und beim Verwenden in einer Funktion innerhalb von C-Befehlskonstrukten 'Wert an der Adresse ... xy ...'.

Das xy ist dann der Inhalt einer Adreß- (=Zeiger-) Variable.

mfg Kikakater
kikakater ist offline   Mit Zitat antworten