-
[C] Der Adressoperator bei scanf
Hallo Leute,
lese gerade die OnlineVariante von C von A bis Z
Derzeit bin ich beim Kapitel 5.1 . Dabei geht es um die formatierte eingabe mit scanf. dort wird beschrieben, dass bei scanf-Operation für Zahlen dieses "&" benötigt wird wegen der Speicherzuordnung.
Bei Stringzuweisung aber weggelassen werden muss.
mfg martin
-
also scanf braucht eine adresse im speicher, wo es die eingegebenen daten speichert.
wenn du nun eine variable hast:
int x;
musst du die adresse von x an scanf übergeben. somit
scanf("%d",&x);
wenn du nun einen pointer hast, der auf die richtige adresse zeigt, dann brauchst du da auch kein & also:
int *x; // Pointer!!!
int y;
x = &y; // lass Pointer auf y zeigen
scanf("%d",x); // kein & weil der pointer die adresse speichert.
um zu verstehen warum bei einem string kein & notwendig ist, muss man wissen, dass strings nichts anderes als char-arrays sind, und ein array eigentlich nichts anderes ist als ein pointer, der schon auf einen bestimmten bereich zeigt.
also:
char x[5];
entpsricht:
char *x;
x = (char) malloc(5*sizeof(char));
wenn du nun mit scanf was in dein array reinschreibst, dann denke daran: ACHTUNG array = pointer und bei pointer kein & in scanf...
hoffe ich habs halbwegs verständlich erklärt
greetz
-
ja jetzt ists mir aufgegangen, werd dann mal weiterlesen
thx
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen