Literale Konstanten
-
Folgende Sache verstehe Ich nicht:
Eine literale Konstante ist ein Wert, den man direkt in das Programm an der Stelle des Vorkommens eintippt. In der Anweisung
int meinAlter = 39;
ist meinAlter eine Variable vom Typ int, während 39 eine literale Konstante bezeichnet. Man kann 39 keinen Wert zuweisen oder diesen Wert ändern.
Da steht das man 39 keinen Wert zuweisen bzw. ändern kann.
39 ist doch aber der Wert. Und ändern kann man diesen auch.
Irgendwie verstehe ich das nicht.
-
Ganz einfach! Folgendes geht nicht:
int x = 29; 29 = 100; // Zuweisung an Literal unmöglich.
-
Wobei sowas recht klar ist, gefährlich wirds bei strings:
char* str = "hallo welt"; strpy(str, "bla"); // Peng! Programm stürzt ab
-
MaSTaH schrieb:
Ganz einfach! Folgendes geht nicht:
int x = 29; 29 = 100; // Zuweisung an Literal unmöglich.
Jetzt geht mir ein Lich auf. Dankesehr.
-
DrGreenthumb schrieb:
Wobei sowas recht klar ist, gefährlich wirds bei strings:
char* str = "hallo welt"; strpy(str, "bla"); // Peng! Programm stürzt ab
Wenn str auf das 'h' zeigt sollte das doch funktionieren ohne Absturz
Außerdem sollte man bei Stringzeigern sowieso const benutzen.
-
DrGreenthumb schrieb:
Wobei sowas recht klar ist, gefährlich wirds bei strings:
char* str = "hallo welt"; strpy(str, "bla"); // Peng! Programm stürzt ab
Deswegen benutzt der C++ Programmierer von Welt das Schlüsseltwort const.
const char* str = "hallo welt";
Die Möglichkeit das const zu "vergessen" gibt es nur noch aus Gründen der Kompatibilität. Steht wenn ich mich nicht irre im Struppi
-
SirLant schrieb:
Wenn str auf das 'h' zeigt sollte das doch funktionieren ohne Absturz
str zeigt auf die Adresse des *konstanten* string-literals. Deshalb funktioniert das eben nicht.