Unterschied zu char zeichen[] und char *zeichenkette
-
was ist denn der unterschied zwischen
char zeichen[]; // und char *zeichenkette;kann mir einer genauer erklären?
-
char zeichen[]; (komplett gehört noch eine Längenangabe oder eine Initialisierung dazu) ist ein Array fester Größe - das wird vom Programm angelegt und am Ende wieder aufgeräumt.
char* zeichen; ist ein Zeiger, der zunächst nirgendwohin zeigt - dort mußt du selber dafür sorgen, daß er auf einen gültigen Speicherbereich verweist (und wenn du diesen mit new anforderst, mußt du auch selber aufräumen).
-
char *zeichenkette; char andere[6]; cout << "Zeichenkette eingeben: "; cin >> zeichenkette; // wieso funz das hier nicht? // bzw zeichenkette[2] = 'B'; // funz auch nicht andere = "nicht"; // dies funz auch nicht warum?ist zeichenkette eine konstante zeiger oder, ein zeiger auf konstante Inhalt?
-
char *zeichenkette = "ich bin der String, auf den der Zeiger zeigt"; char kette[80]; sprintf(kette, "ich werde in das char array geschrieben");
-
JnZn558 schrieb:
ist zeichenkette eine konstante zeiger oder, ein zeiger auf konstante Inhalt?
zeichenkette ist einfach nur ein pointer. du musst dem noch speicher zuweisen (hat cstoll bereits geschrieben). z.b. so
char speicher[256]; char *zeichenkette = speicher;dann sollte dein code gehen. bis auf das 'andere="nicht"'. so kann man keinem array was zuweisen. dafür gibts z.b. strcpy