"Kleines" Verständnis Problem

Gast #2718143
Hallo,

da ich mir C selber beigebracht habe und auch noch dabei bin verstehe 
ich folgene Funktion nicht so ganz:
1
void lcd_data( uint8_t data )
2
{
3
 ...
4
}
5

6
void lcd_string( const char *data )
7
{
8
    while( *data != '\0' )
9
        lcd_data( *data++ );
10
}
1
const char
 bedeutet doch das der Wert Konstant bleibt und unveränderbar ist, oder?
1
*data
 .. ja da von habe ich schonmal gelesen. * kenzeichnen Zeiger... das ist 
leider alles was ich dazu weiß.

Zum Schluss beschäftigt mich noch
1
lcd_data( *data++ );
bewirkt *data++ nicht das der Wert um eins erhöht wird?

PS:
1
    while( *data != '\0' )
Wird '\0' automatisch an ein ende "gehängt" ? Wenn ich z.B. schreibe:
1
const char test = 'Hallo Welt';
2
// test komplett 'Hallo Welt\0'

ich bedanke mich schonmal bei euch :)
#2718150
Hänge_Fest schrieb:

>
1
const char
 bedeutet doch das der Wert Konstant bleibt und
> unveränderbar ist, oder?

Jein.
Das kommt drauf an, wo dieses const benutzt wird.

hier an dieser Stelle, als Argument einer Funktion, kann man es lesen 
als:

Lieber Aufrufer! Ich, die Funktion, werde nicht versuchen, das was du 
mir übergibst zu verändern. Ich sichere zu, die const-ness dessen was du 
mir gibst zu gewährleisten.


>
1
*data
 .. ja da von habe ich schonmal gelesen. * kenzeichnen
> Zeiger... das ist leider alles was ich dazu weiß.

Ja, das ist ein Zeiger.
(beim Variablennamen zu lesen anfangen)

   const char * i

     i ist ein                                       i
     i ist ein Zeiger                              * i
     i ist ein Zeiger auf Character           char * i
     und diese(r) Character ist const   const char * i


d.h. hier ist das worauf der Zeiger zeigt unveränderbar. Der Zeiger 
selbst kann aber ohne weiteres verändert werden, so dass er woanders 
hinzeigt.


> Zum Schluss beschäftigt mich noch
>
1
> lcd_data( *data++ );
2
>
> bewirkt *data++ nicht das der Wert um eins erhöht wird?

Welcher Wert?
Du musst immer unterscheiden:
Wovon ist die Rede. Vom Zeiger selbst oder von dem worauf der Zeiger 
zeigt.

Das ++ wirkt auf den Zeiger, aber nicht auf den Character, auf den der 
Zeiger zeigt.

> Wird '\0' automatisch an ein ende "gehängt" ? Wenn ich z.B. schreibe:

Ja.
Die restlichen Fragen waren gut. Aber die hier verunsichert mich. Du 
hast hoffentlich ein C-Buch? Ohne kommst du nicht weit, bei deinen 
autodidaktischen C-Studien
Gast #2718602
Hallo,

deine Antworten haben mir wirklich sehr! viel weiter geholfen, Danke.

Zu deiner Frage ob ich ein C-Buch habe: Nein. leider nicht aber ich 
glaube ich sollte mir vlt. doch mal eins anschaffen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.