Suche eine gute Erläuterung um "Zeiger auf Strings" zu verwenden
-
Moin Leute,
Seit einiger Zeit bin ich intensiv dabei die Sprache C zu lernen, jetzt bringt mich aber etwas durcheinander und zwar die deklaration eines Zeigers auf einen String.
Und zwarchar *string="Text";
Frage: Worauf bezieht sich der Zeiger?(Er wird ja auf keine Variable verwiesen) oder wäre z.b
char string[]="Text";
das gleiche wie
char *string="Text";
_______
mfg sHeepy
-
black Sheep007 schrieb:
Moin Leute,
Seit einiger Zeit bin ich intensiv dabei die Sprache C zu lernen, jetzt bringt mich aber etwas durcheinander und zwar die deklaration eines Zeigers auf einen String.
Und zwarchar *string="Text";
Nein.
Das ist ein String.In C ist ein string nichts anderes als "ein zeiger auf chars und am ende muss ein NULL zeichen stehen".
Frage: Worauf bezieht sich der Zeiger?(Er wird ja auf keine Variable verwiesen) oder wäre z.b
char string[]="Text";
das gleiche wie
char *string="Text";
Im Prinzip: ja.
es gibt detailunterschiede wie zB dass string[] writable ist, aber das tut nicht viel zur sache.strings in C sind etwas ekliges.
ein string ist eine ansammlung von chars die hintereinander im speicher liegen und mit dem 0 zeichen beendet werden.also zB:
"hallo" -> 'h' 'a' 'l' 'l' 'o' '\0'
char* s="hallo";
hier wird einfach ein zeiger auf das 'h' definiert.
siehe auch: http://tutorial.schornboeck.net/c_string.htm
-
Um es den Moderatoren hier im Forum vorweg zunehmen, liste ich hier mal alle möglichen Antworten auf:
- Such bei Google
- Keine Macht den Dummen
- Kauf dir ein C-Buch
- Kauf dir ein C++ Buch
- Das ist doch nicht dein Ernst
- Lies dir die Man-Pages unter Linux durch
- Lies dir die MSDN durch
- Poste in ein Forum wo Leute antworten, die Ahnung habenDieser Beitrag hilft dir nicht bei deinen Problem, jedoch entlastet er die Datenbank, da ich den Usern und dem Team vom C/C++ Forum die möglichen Antworten
vorweg genommen habe.Dieser Beitrag hätte natürlich auch eine Antwort auf deine Frage sein können !!!!!
Naja in der Tradtion dieses Forums lerne dir selbst zu helfen!!!!!!!!
-
@black sheep: Kauf dir ein C-Buch.
-
Noch was auf so nen scheiss gibt ihr antworten und auf fragen die ein bisschen Intelekt kosten kriegt man die Antwort keine Macht den Dummen
sorry ihr seid zu nicht zu gebrauchen
-
RE schrieb:
Noch was auf so nen scheiss gibt ihr antworten und auf fragen die ein bisschen Intelekt kosten kriegt man die Antwort keine Macht den Dummen
sorry ihr seid zu nicht zu gebrauchenWerde doch bitte mal konkret.
-
ah
Also kann man in einem String welcher per Zeiger erstellt wurde kein Zeichen ändern,
Vielen Dank für diese Hilfreiche antwort @ Shade Of Mine___
mfg sHeepy
-
Shade Of Mine schrieb:
Frage: Worauf bezieht sich der Zeiger?(Er wird ja auf keine Variable verwiesen) oder wäre z.b
char string[]="Text";
das gleiche wie
char *string="Text";
Im Prinzip: ja.
es gibt detailunterschiede wie zB dass string[] writable ist, aber das tut nicht viel zur sache.falsch. ersteres ist ein string den man über den namen 'string' ansprechen kann. eine pointervariable 'string' existiert hierbei nicht. das zweite ist eine pointervariable, die mit der adresse von einem speicherbereich, der die zeichen "Text" enthält, initialisiert wird.
beispiel:char *string="Text"; string = "hallo"; // geht, weil string ein pointer ist
char string[]="Text"; string = "hallo"; // geht nicht
-
net schrieb:
falsch. ersteres ist ein string den man über den namen 'string' ansprechen kann.
und zweiteres nicht?
eine pointervariable 'string' existiert hierbei nicht. das zweite ist eine pointervariable, die mit der adresse von einem speicherbereich, der die zeichen "Text" enthält, initialisiert wird.
ja, das sind detail unterschiede die zum verstaendnis von strings nicht wichtig sind.
ein zeiger und ein array verhalten sich in den meisten situationen identisch. und die paar details wo das anders ist, sind irrelevant wenn es darum geht string zu verstehen...
-
Shade Of Mine schrieb:
ja, das sind detail unterschiede die zum verstaendnis von strings nicht wichtig sind.
naja, ich denke schon das es wichtig ist, einem einsteiger den unterschied zwischen array[] und *pointer zu erklären (er fragte ja sogar danach, ob's das gleiche ist).