im beigefügten Quelltext-Beispiel ist soweit alles verständlich ausser:
char *msg = "Hallo Welt";// Nachricht
dort wird der Variablen *msg ein text zugewiesen. Was bedeutet das " * " vor "msg" ?
und in der Zeile:
vw_send((uint8_t *)msg, strlen(msg));
Was bedeutet "(uint8_t *)msg" ?
"uint8_t" hat was mit "byte" zu tun aber warum wird hier nur "uint8_t" verwendet ?
Kann mir das jemand kurz erklären oder ein Hinweis geben. In der Referenz habe ich auch
nicht wirklich was gefunden.
dort wird der Variablen *msg ein text zugewiesen. Was bedeutet das " * " vor "msg" ?
Das * vor der variable bedeutet dass die Variable ein Pointer(/Zeiger) ist, sie zeigt nur auf einen Speicherbereich wo in dem Fall "Hallo Welt" drin steht. http://www.c-howto.de/tutorial-zeiger.html
Was bedeutet "(uint8_t *)msg" ?
Das Ganze ist Type casting, da der Compiler ja denkt das msg vom Typ char * ist und die Funktion anscheinend uint8_t * als Parameter braucht, man sagt dem Compiler in dem Fall dass er die Varibale an der Stelle als einen anderen Typ benutzten soll. (Würde sonst einen Warnung ausgeben)
In dem fall geht das weil char * und uint8_t * gleich groß sind (uint8_t ist nur unsigned)
dass das " *msg " ein Pointer ist, hab ich mit fast gedacht. Muss man nun das so machen oder kann man "Hello World" nicht in eine einfache Stringvariable schreiben ? Z. Bsp. string msg = "Hallo Welt";
...
... vw_send(msg, strlen(msg));
oder verlangt die Funktion vw_send.......; ausdrücklich einen Pointer (was ich vermute )?
einen "string" gibt es in c nicht, strings nur arrays an bytes.
könnte man auch machen, man muss dann nur die position des ersten bytes an die funktion als pointer übergeben,