char und char * (Zeiger)

Ich möchte verstehen, wie Zeiger funktionieren, also habe ich dieses kleine Programm erstellt. als erstes erstelle ich einen p zeiger, der auf ein zeichen zeigt.

Die erste Frage ist an dieser Stelle. Wenn ich einen Zeiger erstelle, ist der Wert eine Speicheradresse (wenn ich auf ein Nicht-Zeiger-Objekt zeige), aber dieses Mal ist es "haha" in meinem Beispiel. Warum funktioniert das in char * so? Und wie kann ich mit cin >> p einen Mehrwert schaffen?

Meine zweite Frage ist, dass ich ein q char erstellt habe, das den Wert des Zeigers * p an dem Punkt hat, an dem ich es erstellt habe. ABER sein Wert und seine Adresse sind auch "h", aber warum? Es muss die Speicheradresse dieses Zeichenobjekts sein! Es ist sinnlos: D (mingw - gcc)

#include <iostream>

int main() 
{
 /* char *p;
    cin >> p;                      //forexample: haha */

    char * p = "haha";
    char q = *p;
    std::cout << "&q = " << &q << std::endl;   //&q = h
    std::cout << "q  = " <<  q << std::endl;   //q = h

    return 0;
}

MEHR: Wenn ich zuerst mit char a [100] Speicher zuweisen; char * p = a; dann & q = h »ŢĹ, also" h "und etwas Durcheinander. aber es sollte eine speicheradresse sein! und meine frage ist, warum ist es dann nicht adresse?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage