Aha, also verstehe ich das richtig, dass *IrgendeinText
möglicherweise im Speicher rumgeschoben wird bei Bedarf?
Nein. *IrgendeinText muss von dir noch überhaupt mit einer Speicheradresse befüllt werden.
Was ich deswegen aber nicht Verstehe ist, warum die Zuweisung
NochMehrText=„Das geht nicht“; //bzw.:
einen Fehler produziert
Weil NochMehrText ein char[] ist und bereits festgelegt wurde von dir, nämlich durch die Anweisung „char NochMehrText[30];“. Damit hast du einen 30-stelliges char-Array im Speicher an einer ganz bestimmten Adresse angelegt.
„Das geht nicht“ dagegen ist ein anderes char[], das irgendwo anders im Speicher liegt. Wenn du den Inhalt von NochMehrText ändern willst, musst du das char[] selbst ändern, in dem du die Zellen des Arrays änderst. Etwas anderes macht strcpy auch nicht.
NochMehrText=‚Das geht nicht‘;
Das macht keinen Sinn. In Hochkommas gibst du eine einzelne char-Variable an, die im Prinzip ein einziges Byte ist. Der Compiler sollte dir hier sowieso mindestens eine Warnung geben.
und warum es bei einem einzelnen
character mit den einzelnen ’ also:
NochMehrText[0]=‚x‘;
Weil NochMehrText[0] ein char-Wert aus dem char-Array ist. Und diesem einzelnen char-Wert weißt du nun einen neuen Wert, nämlich ‚x‘ zu.
funktioniert…
Andersrum, wie würde eine zuweisung aussehen die funktioniert?
Was soll wie funktionieren? Wenn du mir sagst, was du machen willst, dann kann ich dir auch sagen, wie eine funktionierende Zuweisung aussieht. Meinst du vielleicht sowas?
#include
#include
main() {
char\* IrgendeinText;
char NochMehrText[30];
IrgendeinText = "Das geht";
strcpy(&NochMehrText[0], IrgendeinText);
//man könnte dem array zelle für zelle text zuweisen, also
//NochMehrText[0]='D';
//HINWEIS: Etwas anderes macht strcpy auch nicht.
printf("IrgendeinText = '%s'\n", IrgendeinText);
printf("NochMehrText = '%s'\n", &NochMehrText[0]);
}