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?