"Kleines" Verständnis Problem

Gast #2718143
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren