Anzeige:
Ergebnis 1 bis 7 von 7

Thema: [c] warum scanf("%c",&n); und nicht scanf("%c",n); ????

  1. #1
    cyneox
    Gast

    [c] warum scanf("%c",&n); und nicht scanf("%c",n); ????

    ich hab folgenden code:


    #include <stdio.h>

    main(void)
    {
    char n;
    fcanf(stdin,"%c",&n);
    ..
    ..
    exit(0);
    }



    ----->kann mir jemand erklären warum man &n schreiben muss und nicht einfach n... ???
    ------>ich weiss bei integern muss man es so schreiben (&integer) ...aber warum muss man für ein einziges zeichen das '&' davor schreiben????

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das hat nichst mit dem Typ der Variable zu tun.
    Die scanf Funktion schreibt die Inhalte in Variablen, deren Pointer sie hat.
    Du musst also einen Pointer übergeben.

    Wenn du nur n übergibts, ist das "Call by Value", d.h. die Funktion bekommt eine Kopie des Inhalts, aber weiß nicht, wo im Speicher die Variable n steht.

    Das muss scanf aber wissen, weil es ja das Resultat dorthin schreiben muss.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    cyneox
    Gast

    zeichenkette

    ok..und was ist mit dem folgenden beispiel:

    #include <stdio.h>

    main()
    {
    char zeichen[100];
    scanf("%s",zeichen):

    exit(0);
    }



    -->da muss man aber kein '&' hinschreiben ....warum nicht?????

  4. #4
    Registrierter Benutzer Avatar von oracle2025
    Registriert seit
    18.03.2002
    Beiträge
    136
    weil ein Array immer ein Pointer ist
    Niemand dringt hier durch und
    gar mit der Botschaft eines Toten.
    Du aber sitzt an Deinem Fenster und
    erträumst sie Dir, wenn der Abend kommt.

  5. #5
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    Original geschrieben von oracle2025
    weil ein Array immer ein Pointer ist
    Das ist in dieser allgemeinen Aussage sicherlich falsch,gibt viele Bsp. die das zeigen.
    Richtig ist,das bei einem Funktionsaufruf ein Array in einen Zeiger auf sein erstes Element degeneriert.

  6. #6
    Registrierter Benutzer Avatar von Trillian
    Registriert seit
    26.04.2001
    Beiträge
    180

    Re: zeichenkette

    Original geschrieben von cyneox
    ok..und was ist mit dem folgenden beispiel:

    #include <stdio.h>

    main()
    {
    char zeichen[100];
    scanf("%s",zeichen):

    exit(0);
    }



    -->da muss man aber kein '&' hinschreiben ....warum nicht?????
    Weil in diesem Fall (Array!) "zeichen" = "&zeichen[0]" ist - es liefert also die Adresse des ersten Elements.

  7. #7
    cyneox
    Gast

    Danke

    vielen dank nochmal für eure mühe....ich glaub ich muss noch mal mein c-programmierbuch lesen....(nur eigene stellen)....

    thx @ all

Lesezeichen

Berechtigungen

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