Anzeige:
Ergebnis 1 bis 3 von 3

Thema: [C] Der Adressoperator bei scanf

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.04.2005
    Beiträge
    105

    [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

  2. #2
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    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

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.04.2005
    Beiträge
    105
    ja jetzt ists mir aufgegangen, werd dann mal weiterlesen
    thx

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •