M
@rT!f@Ct schrieb:
sieh mich jetzt nicht als beratungsresistent an.
Das ist gut, das ist nämlich der erste Schritt, um weiterzukommen.
@rT!f@Ct schrieb:
ich verstehe schon was du sagen willst, nur erkläre ich halt nicht das 0 Element als 0. stelle sondern eben als 1. stelle.
Ich erkläre es auch als 1. Stelle.
@rT!f@Ct schrieb:
und wir kommen halt zu den gleichen ergebniss, nämlich das man das 5 Element(sagst sogar du) nicht beschreiben kann.
Das Ergebnis mag vielleicht gleich sein. Aber deine Begründung war falsch. Und es hilft dem Fragesteller nichts, wenn er was falsches lernt. Das 5. Element kann nicht beschrieben werden, weil der Speicher, auf den der []-Operator zeigt, nicht existiert. Und nicht, weil es ein Pufferelement ist, dass nicht zum Überschreiben gedacht ist.
@rT!f@Ct schrieb:
mit deiner strucktur Datensatz erstellst du einen Bereich (Array)
Datensatz Daten[4];
dieser bereich beinhaltet jetzt 5 freie plätze. (erinnere dich... ein bereich hat immer ein Element mit 0 (0 -> 4 = 5 Stellen))
Das wäre der erste falsche Punkt. Bei Datensatz Daten[4]; sind es einfach 4 Plätze. Da kann man nicht drum herum reden und was von 5 sprechen. Es sind einfach nur 4.
@rT!f@Ct schrieb:
du sagst deiner schleife (i <= 4) dein datensatz ist auch 4 elemente groß, somit geht deine schleife bis ans allerletzte element und das ist nicht gut bei einem bereich, da dieser immer ein element mehr haben soll als tatsächlich reingeschrieben werden. dieses letzte element in dem bereich ist der puffer und wenn du den angreifst, bricht dein programm i.d.r zusammen.
Diesen Ansatz finde ich echt schräg. Es gibt keinen Puffer bei einem Array. Es gibt die definierte Anzahl Speicherplätze, nichts danach oder davor. Die Schleife sagt nicht, dass der Threadersteller annimmt, es seien 4 Elemente, sondern durch den <= testet er auf 5 Elemente. Was klarerweise in die Hose geht.
@rT!f@Ct schrieb:
wenn du also einen bereich mit einer schleife durchläuft, egal ob du nun daten in den bereich schreibst, oder daten aus diesem bereich ausliest. solltest du immer darauf achten, das du mit der schleife NIE das allerletzte element (puffer) in dem Bereich berührst.
Auch wieder falsch. Natürlich kann man das letzte Element eines Arrays nutzen. Aber eben nicht darüberhinaus. Das sagst du aber nicht. Du redest von einem Puffer, den es so nicht gibt, außer vielleich im Kopf des Programmierers. Ich empfinde sowas aber als unsauber, vor allem, weil es unnötig ist, wenn man sich der Grenzen des Arrays bewusst ist.
@rT!f@Ct schrieb:
ne kleine hilfe dabei ist, sich ne konstante zuzulegen
#define DATASIZE 5
diese für die Bereichserstellung und für die Schleife zu nutzen. und die bedingung für die schleife nicht kleiner gleich (<=) sondern nur auf kleiner (<) festzulegen.
Mit dem Vergleichsoperator hast du definitiv recht, das ist eine sinnvolle Änderung. Aber die Konstante ist wiederum seltsam. Warum 5, wenn man 4 will?
@rT!f@Ct schrieb:
somit sehe ich das nicht als schwachsinn an, was ich geschrieben hab. ich drück mich halt nur anderst bzw. leihenhaft aus, weil programmieren für mich ein hoppy ist.
[NEW EDIT]
darf ich deshalb anderen keine hilfestellung geben? oder muss man meine erklärung deshalb als schwachsinn betitteln?
Klar darfst du anderen Hilfestellung geben. Aber gerade bei Anfängern ist es wichtig, ihnen nicht irgendwas zu erzählen (nichts für ungut, aber deine Pufferidee von oben zählt zu "irgendwas"), sondern ihnen das wesentliche und vor allem richtig zu erklären.
Ein Anfänger sieht bei deinen Erklärungen nicht, was du sagen willst, sondern etwas anderes, wenn du dich nicht genau ausdrückst. Gerade Programmieren ist eine präzise Arbeit.
Das ich das ganze als "Schwachsinn" betituliert habe, lag einfach daran, dass du die richtige Erklärung als falsch dargestellt hast. Sowas bringt keinen weiter.
Wenn jemand meine Dinge als falsch bezeichnet, dann überlege ich, ob der andere nicht vielleicht recht haben kann. Nur wenn ich mir sicher bin, dass ich richtig liege, verbessere ich das dann.
Es war nicht böse oder verletzend gemeint, sondern einfach nur eine Wertung deiner Aussage. Und das man hier im Forum nicht mit Samthandschuhen kämpft, solltest du doch auch wissen
Also, nichts für ungut.