Angenommen, der folgende Code:
%Vor% Meine erste Reaktion wäre gewesen, zu denken, dass ich etwas Platz entweder auf dem Heap oder durch eine explizite char name[] = "Anna"
zuweisen müsste, aber mein Beispiel oben funktioniert. Speichert der Compiler diese Zeichenfolge nur im Datensegment und zeigt auf sie? Mit anderen Worten, ist das wie ein
Danke.
Sie haben hier keinen Speicher reserviert, weil Sie den Zeiger c1.name
point auf ein String-Literal setzen und String-Literale statische Speicherdauer haben. Dies ist NICHT ähnlich zu:
Da in diesem Fall Speicher reserviert wird, um das Stacheliteral zu speichern, wird das String-Literal "Anna"
in das Array name
kopiert. Was Sie mit der Strukturzuweisung c1.name = "Ana"
tun, ist ähnlich wie bei Ihnen:
d. Stellen Sie den Zeiger auf ein Zeichenfolgenliteral.
Ich bin neu in C, aber aus dem, was ich denke, könnte das genauso sein wie
%Vor% Dabei würde printf("%s\n", cThing);
"Things!" ausgeben, außer dass Sie den Zeiger in einer Struktur deklarieren.
Tags und Links c