Hallo
Ich habe gerade ein wenig Zeit über und bin dabei C zu lernen. Bis jetzt fand ich alles logisch, aber bei dem Kapitel über Zeiger habe ich ein Verständnisproblem. Zur Info, ich lerne mit dem freien Buch "C von A bis Z von Jürgen Wolf".
Also folgendes:
So wie ich es verstanden habe ist string hier der Zeiger, der als Wert eine Adresse vom Arbeitsspeicher enthält. In dem Fall die Startadresse des Arrays, in dem Buchstabe für Buchstabe der String gespeichert ist. Da der Zeiger und die Variable bzw. Array auf den er weist immer den gleichen Datentyp haben, nehme ich also an, dass der Array in diesem Fall auch vom Typ char ist.
Was mich jetzt wunder ist, dass dieser Array nicht initialiesiert werden musste, so wie:
Also nehme ich an, dass dieser Schritt automatisch passiert und dass der Speicher, der reserviert wird der Stringlänge + 1 entspricht. Ist das richtig?
Wenn ja, dann verwundert es mich, da doch sonst bei C immer alles manuell initialiesiert werden muss.
Ich habe gerade ein wenig Zeit über und bin dabei C zu lernen. Bis jetzt fand ich alles logisch, aber bei dem Kapitel über Zeiger habe ich ein Verständnisproblem. Zur Info, ich lerne mit dem freien Buch "C von A bis Z von Jürgen Wolf".
Also folgendes:
Code:
/* Bsp-Programm */
#include <stdio.h>
int main(void) {
char *string = "Hallo Welt\n";
}
So wie ich es verstanden habe ist string hier der Zeiger, der als Wert eine Adresse vom Arbeitsspeicher enthält. In dem Fall die Startadresse des Arrays, in dem Buchstabe für Buchstabe der String gespeichert ist. Da der Zeiger und die Variable bzw. Array auf den er weist immer den gleichen Datentyp haben, nehme ich also an, dass der Array in diesem Fall auch vom Typ char ist.
Was mich jetzt wunder ist, dass dieser Array nicht initialiesiert werden musste, so wie:
Code:
/* Bsp-Programm */
#include <stdio.h>
int main(void) {
char string[12];
char *string = "Hallo Welt\n";
}
Also nehme ich an, dass dieser Schritt automatisch passiert und dass der Speicher, der reserviert wird der Stringlänge + 1 entspricht. Ist das richtig?
Wenn ja, dann verwundert es mich, da doch sonst bei C immer alles manuell initialiesiert werden muss.