Char Zeiger und die printf-Funktion

War ich versucht zu lernen, Zeiger und ich schrieb Sie den folgenden code zum drucken der Wert des Zeigers:

#include <stdio.h>

    int main(void) {
        char *p = "abc";
        printf("%c",*p);
        return 0;
    }

Ausgabe:

einen

jedoch, wenn ich den obigen code:

#include <stdio.h>

int main(void) {
    char *p = "abc";
    printf(p);
    return 0;
}

Bekomme ich die Ausgabe:

abc

Ich verstehe nicht, die folgenden 2 Dinge:

  1. warum printf nicht verlangen, ein Formatbezeichner im zweiten Fall? Ist printf(pointer_name) genug, um drucken Sie den Wert des Zeigers?
  2. gemäß meinem Verständnis (das ist sehr wenig), *p Punkte zu einem zusammenhängenden block von Speicher, die enthält abc. Ich erwartet, dass beide Ausgänge gleich sein, d.h.

abc

sind die verschiedenen Ausgänge aufgrund der unterschiedlichen weisen des Druckens?

Bearbeiten 1

Darüber hinaus der folgende code erzeugt einen Laufzeitfehler. Warum ist das so?

 #include <stdio.h>

    int main(void) {
        char *p = "abc";
        printf(*p);
        return 0;
    }
"*p Punkte zu einem zusammenhängenden block von Speicher" zeigt es nirgends, wie *p ist kein Zeiger, sondern wertet eine char.

InformationsquelleAutor Fabulous | 2016-10-12

Schreibe einen Kommentar