char Array + Zeiger [C]

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • char Array + Zeiger [C]

    Quellcode

    1. #include <stdio.h>
    2. int main() {
    3. enum tag_typ{Mo,Di,Mi,Do,Fr};
    4. char *plan[Stunden][Tage];
    5. plan[0][Mo] = "Mathe";
    6. /... hier würden noch die ganzen anderen Eingaben folgen...
    7. printf("%s \n",plan[0][Mo]);
    8. getchar(); /* ggf. notwendig damit Ausgabefenster offen bleibt */
    9. return 0;
    10. }
    Alles anzeigen



    Hallo, bin neu hier und versuche gerade dieses Programm aus unserem Klausurskript zu verstehen.
    (ich hab auch schon in anderen Quellen gesucht aber da wird nicht genau erklärt, wieso das so ist):

    Also:
    ich lege ja ein Array von char Zeigern an?
    So und anschließend setze ich jeden Zeiger aus dem Array-Feld auf ein Wort( String)
    So aber dieser String an sich ist ja selbst wieder ein Char-Array, oder?

    Und an sich speichert ja ein Zeiger die Adresse von einem Objekt, aber bei
    plan[0][Mo] = "Mathe";
    wird doch keine Adresse übermittelt bzw. welche Adresse wird dann übermittelt, die vom ersten char-Element oder? 'M' quasi


    Und für dieses Beispiel hab ich auch keine Lösung gefunden.

    Quellcode

    1. char *string = "Hallo Welt";
    2. printf("%s",string);



    Hier erstelle ich auch einen char-Zeiger auf den String Hallo Welt bzw. der die Adresse von Hallo Welt eingespeichert hat??
    Aber normalerweise greife ich doch auf die dereferenzierte Variable mit dem *-Operator zu, also
    printf("%s",*string)

    Wieso ist das hier nicht der Fall??


    wäre super nett, wenn das jemand beantworten könnte.
    Weil sonst müsste ich dieses Thema hoffentlich langsam gut können.
    Danke :)
  • Und an sich speichert ja ein Zeiger die Adresse von einem Objekt, aber bei
    plan[0][Mo] = "Mathe";
    wird doch keine Adresse übermittelt bzw. welche Adresse wird dann übermittelt, die vom ersten char-Element oder? 'M' quasi

    du musst dir immer klarmachen wie strings innerhalb der sprache C abgespeichert werden, dann verstehst du auch, dass bei der zuweisung oben intern, genau wie du sagst, nur die anfangsadresse übergeben wird.

    Und für dieses Beispiel hab ich auch keine Lösung gefunden.

    Quellcode

    1. char *string = "Hallo Welt";
    2. printf("%s",string);


    Hier erstelle ich auch einen char-Zeiger auf den String Hallo Welt bzw. der die Adresse von Hallo Welt eingespeichert hat??
    Aber normalerweise greife ich doch auf die dereferenzierte Variable mit dem *-Operator zu, also
    printf("%s",*string)

    Wieso ist das hier nicht der Fall??

    würdest du mit * zugreifen, würde da wahrscheinlich nur ein 'H' herauskommen, oder der Compiler würde es erst garnicht zulassen, da du dann ein %c als formatangabe angeben müsstest, wenn dass denn überhaupt geht. aber probier es am besten selbst. das wäre dass was ich jetzt machen würde um es zu verstehen.

    auch würde ich mal ein

    Quellcode

    1. printf("%s",&string[0])

    probieren.