Liebe Kollegen,
Ich verstehe nicht ganz den Unterschied von der Arrays. Sie funktionieren zwar so wie ich es möchte aber verstehen möchte ich es trotzdem
Bsp:
char* AusgabeTextSerial[] = {"Sensor wird Kalibriert", "Kalibrierung Erfolgreich","Bewegung registriert"};
Was macht der Stern?
Es geht ja auch ohne?
ODER
char *AusgabeTextSerial[] = {"Sensor wird Kalibriert", "Kalibrierung Erfolgreich","Bewegung registriert"};
Was macht der Stern jetzt?
ODER
char AusgabeTextSerial[] = „Sensor wird Kalibriert", "Kalibrierung Erfolgreich","Bewegung registriert";
Arrays sind in C++ keine Objekte. Sondern nur reservierter Speicher. Und Array-Variablen sind automatisch Zeiger auf das erste Element. Ein C String ist ein char Array, und damit auch ein Zeiger auf das erste Element. Also sind Arrays aus C Strings Arrays aus Zeigern.
char var[]: Array aus char -> ein C String
char* var[]: Array aus char* (Zeiger auf char) -> Array aus C Strings
Wo der Stern steht ist egal. Man sieht beides. Aber für mich gehört er eigentlich zum Datentyp. Nicht zur Variablen
Die { } ist für Initialisierungen. Auch das sind Grundlagen
Serenifly:
Wo der Stern steht ist egal. Man sieht beides. Aber für mich gehört er eigentlich zum Datentyp. Nicht zur Variablen
Betrachten wir mal diese 2 Programmzeilen:
char* a,b,c;
char *a,b,c;
Beide Zeilen sind syntaktisch korrekt, und beide Zeilen führen zum gleichen Ergebnis.
Nur, welche Schreibweise verdeutlicht das Ergebnis, und welche verschleiert es eher?
Nur a ist ein Pointer auf ein char, b und c sind einfache char-Variable.
Für den Compiler gehört der * zur Variablen! Auch das ist korrekt:
Ja, das ist einer der Fälle wo es bei der Variablen besser ist. Bein const und const/const Zeigern kann es auch schwierig sein herauszufinden was gemeint ist.
Ich umgehe das einfach in dem ich nicht mehrere Variablen in einer Zeile deklariere
Ja, kann man natürlich machen (mache ich auch manchmal so ).
Ich halte es aber einfach für gefährlich, sich Denkweisen anzueignen, die nicht zum Verhalten des Compilers passen - vor allem hier, wo viele Anfänger unterwegs sind, für die sowas böse Fallen sein können.
michael_x:
Globale Variable sollten eine Beschreibung haben. Das spricht für max 1 Variable je Zeile.
Das gilt nicht nur globale Variable. Ich kommentiere grundsätzlich jede Variable, die ich deklariere. Was mir als Zehn-Finger-Tipper aber auch echt nicht schwer fällt. Kommentare sind zwar eine lästige Sache, wenn man nur mal schnell etwas testen möchte, aber es dauert oft keine Woche, bis ich mich nicht mehr daran erinnern kann, was genau ich bei welcher Codezeile gedacht habe. Und häufig ist der Code, der experimentell entstanden ist, genau der Code, der im fertigen Sketch landet.
Und wenn ich beim Kommentieren besonders geizig bin, bekommt eine Funktion zumindest eine Beschreibung
Ja, Thema 'Programmierstil' - immer wieder gerne genommen . Ist aber ja auch wichtig, damit übersichtliche Programme entstehen.
Meine kleinen Programmzeilen waren ausschließlich dazu gedacht, zu zeigen, dass der Compiler das '*' der Variablen zuordnet, und eben nicht dem Typ.
Dass es durchaus sinnvoll ist, i.d.R jede Variable in einer einzelnen Zeile zu definieren ist eine andere Geschichte. Dann stimmt es schon, dass man das Sternchen auch direkt beim Typ plazieren kann. Trotzdem sollte man sich bewusst sein, dass der Compiler es nunmal anders sieht.
Auch jede Variablendefinition ordentlich zu kommentieren ist richtig. Allerdings finde ich es noch wichtiger, aussagekräftige Variablennamen zu verwenden. Das hilft nicht nur dort, wo die Variable definiert wird, sondern auch dort, wo sie angewendet wird. Nur könnte man dann vielleicht wieder auf die Idee kommen, doch mal 2 zusammengehörige (Pointer-) Variablen in einer Zeile zu definieren ...
Neben allen Stilelementen, die ein Programm für den menschlichen Betrachter übersichtlicher macht, ist es eben immer auch wichtig zu wissen, wie der Compiler es sieht. Das sind halt manchmal 2 durchaus unterschiedliche Betrachtungsweisen
MicroBahner:
Das [mit den unterschiedlichen Programmierstilen] sind halt manchmal 2 durchaus unterschiedliche Betrachtungsweisen
Ich streiche „manchmal“ und ersetze durch „meistens“. Ich versuche immer so zu programmieren, dass es auch ein sehr oberflächlich Kundiger versteht. Das ist üblicherweise zwar mehr Tipperei, aber wenn es irgendwann um Wartung geht, freue ich mich.
Naja, und wenn der Kunde Stilvorgaben macht, gelten halt die.