Ich bin mir nicht sicher, ob ich die Frage richtig formuliert habe, aber hier ist sie klar formuliert:
char * cp = "this is a char pointer";
Der obige Code scheint, basierend auf meinem derzeit begrenzten Verständnis, akzeptabel zu sein. Der folgende Code scheint jedoch nicht akzeptabel zu sein:
int * ip; // UPDATED
*ip = 5; // UPDATED
Vielmehr muss ich etwas sagen wie:
int x;
int * ip;
ip = &x;
x = 5;
Mit der Zeichenkette kann ich also einfach meinen Zeiger so initialisieren, dass er direkt auf ein Zeichenfolgenliteral zeigt, sobald ich es buchstabiert habe. Ich muss dieses Zeichenfolgenliteral nicht mit einer anderen Variablen identifizieren... aber vielleicht liegt das an der engen Beziehung zwischen Zeigern und Arrays, und ich identifiziere es tatsächlich gleichzeitig mit dem impliziten Array desselben Namens? (mein Versuch, meine eigene Frage teilweise zu beantworten)
Aber mit dem Integer kann ich nicht einfach auf einen Integer-Wert verweisen, der sich im Speicher befindet. Ich muss diesem Integer-Wert einen Variablennamen geben und auf den Ort der Variablen zeigen.
Ich vermute, dies könnte etwas mit den Unterschieden von Stack vs. Heap-Speicher zu tun haben? Etwas, bei dem ich noch ein wenig schwach bin...
Für jeden weiteren Einblick wären wir dankbar! Danke!