char* und malloc
-
Hallo, wenn ich deklariere:
char test1=(char*) malloc(100 *sizeof(char));
char test2 = "Dies ist ein Char";
Aussage:
bei test1 reserviere ich mir speicherplatz für 100 char zeichen.
(Größe 1 Byte, 255 versch. Zeichen können abgebildet werden)bei test2 wird kein speicher reserviert, sondern die anzahl der eingegebenen chars wird im speicher abgelegt und die evtl, vorhandenen werte im speicher werden überschrieben.
sind die aussagen von mir richtig?
-
Stef_Man schrieb:
bei test1 reserviere ich mir speicherplatz für 100 char zeichen.
richtig, aber du kannst es viel kürzer schreiben:
char *test = malloc(100);
Stef_Man schrieb:
bei test2 wird kein speicher reserviert, sondern die anzahl der eingegebenen chars wird im speicher abgelegt und die evtl, vorhandenen werte im speicher werden überschrieben.
naja, du legst einen pointer an, der auf einen festen string zeigt. der pointer ist veränderbar, d.h. du kannst ihn auch wo anders hin zeigen lassen (bei test1 übrigens auch). der string aber ist 'read-only' d.h. er sollte bzw. kann nicht verändert werden. der speicher, den du bei 'test1' bekommst, ist dagegen auch beschreibbar.
-
übrigens muss es in beiden fällen ein char* (nicht char) sein (so wie in deinem code).
-
wenn ich nun ein char an eine Funktion übergeben möchte, wie mache ich das?
wenn ein char "nur" ein pointer ist, muss ich
char* test;
erg = Funktion(test);
aufrufen und ich übergebe "nur" den Zeiger und keine Werte.
-
Und in der Funktion kann man dann über den Zeiger auf die Werte zugreifen.