Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu Zeigern

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frage zu Zeigern

    Hallo !

    Ich schreibe am Montag eine Klausur in Informatik und stoße bei den Übungsklausuren immer wieder an einen Punkt den ich mir nicht erklären kann.
    Ich hoffe Ihr könnt mir weiterhelfen.

    Quellcode:
    Code:
    #include <stdio.h>
    
    main()
    {
    int index;
    char *y, *z, text[] = "ebagfuA";
    z = text;
    for (index = 6; index > -1; index--)
    {
    y = z + index;
    printf("%c",*y);
    }
    }
    Die Ausgabe ist "Aufgabe", das ist mir soweit klar.

    Jetzt kommt der Teil der mir ein Rätsel ist:
    Die printf Anweisung wird nun geändert in :
    Code:
    printf("%s",y);
    Die Ausgabe ist jetzt: "AuAfuAgfuAagfuAbagfuAebagfuA"

    Ich verstehe einfach nicht wie das zustande kommt und wie ich in der Klausur darauf kommen soll.

    Ich hoffe ihr könnt mir weiterhelfen.

    LG Harle

  • #2
    Hallo Harle!

    Der Grund liegt darin, dass %c immer ein Character, also ein Zeichen ausgibt, während %s einen ganzen String ausgibt. Ein String in C ist immer nullterminiert, d.h. er endet mit \0. Wenn oben

    PHP-Code:
    text[] = "ebagfuA"
    definiert wird, hängt der Compiler automatisch die 0 an.

    Das führt in deiner Aufgabe nun dazu, dass von hinten nach vorne 6 mal ausgegeben wird. Zuerst der letzte Buchstabe A, dann der vorletzte und letzte Buchstabe uA usw. bis am Ende der ganze String 1 zu 1 ausgegeben wird.

    Grüße,
    GAGA

    Kommentar

    Lädt...
    X