Christoph Roters schrieb:
> http://de.wikibooks.org/wiki/C-Programmierung:_Arrays_und_Strings
> als durch die beiden letzten Beiträge. Habe es 100 mal hingeschrieben ,
> hat aber irgendwie keinen Erkenntnissgewinn gebracht. ;-)
> Trotzdem Danke für die nette Hilfe hier im Forum
Jetzt fehlt nur noch die Einsicht, dass Online Tutorials einem
vernünftigen Buch (zb. dem Klassiker "Kernighan & Ritchi") nicht das
Wasser reichen können. Und ohne Literatur wirst du immer in der
Situation sein, dass du über Halbwissen verfügst, das hinten und vorne
nicht zusammenpasst.
> Aber ich weiss jetzt, dass ein char immer ein Array ist und ich nicht so
> einfach Zuweisungen machen darf.
Siehst du: Genau das meine ich.
Ein char ist kein Array. Ein char ist ein char.
Strings werden immer als Abfolge von chars im Speicher abgelegt. Das
kann sein ein char-Array, das kann aber auch ein String-Literal sein,
von dem man einen Pointer auf den Anfang des Literals hat.
> Und das ich die Arrays am besten über Funktionen oder Pointer anspreche
> bzw. verwalte.
Nicht notwendigerweise.
Aber wenn du von Strings sprichst, kannman das so formulieren. Für
Strings gibt es vorgefertigte Funktionen, die damit umgehen können.
> 1) Was genau bedeutet char *
char * a;
a ist ein Pointer auf einen char. Ob sich an dieser Stelle im Speicher
ein einzelner char befindet, oder ob dort der Start einer Sequenz von
char ist, lässt sich am Pointer nicht ablesen. Das muss der
Programmierer wissen.
> 2) Wen ich z.b. LCD_TXT[0] = 0; schreibe und vorher stand etwas in
> LCD_txt.
> Bleben das Reste von LCD_TXT im Speicher?
Ja, klar. Die Zuweisung verändert ja nur LCD_TEXT[0]. Alle anderen
Elemente des Arrays bleiben unangetastet.
Die Operation macht genau das, was da steht. Und nur das!
Noch ein anderer Link
http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
Aber: Das alles ist kein Ersatz für Literatur!
Die paar Euros, die dir ein K&R kosten, sind gut investiertes Geld.
Dafür bekommst du einen vernünftigen, umfangreichen und vor allem
systematisch aufgebauten Kurs in alle Bereiche von C. Eine
Programmiersprache wie C, mit all ihren Facetten, kann man nicht durch
"Versuch und Irrtum" lernen und dadurch, dass man immer nur ein bischen
Halbwissen ansammelt. Alles ist mit allem irgendwie verknüpft und hängt
zusammen. Mit Halbwissen wirst du einen Teilbereich einer Sprache (zb
Stringverarbeitung) niemals richtig verstehen, wenn du über andere
wichtige Bereiche (Arrays, Pointer und die Zusammenhänge von Arrays und
Pointer) überhaupt nichts weißt.