PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Der Adressoperator bei scanf



baumgartner
14-09-2005, 13:54
Hallo Leute,

lese gerade die OnlineVariante von C von A bis Z (http://www.pronix.de)

Derzeit bin ich beim Kapitel 5.1 (http://www.pronix.de/pronix-655.html) . 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. :confused: :confused:

mfg martin

quinte17
14-09-2005, 14:08
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 :D
greetz

baumgartner
14-09-2005, 14:57
ja jetzt ists mir aufgegangen, werd dann mal weiterlesen
thx :cool: