Hi Jungs und Mädels! Ich hab da mal ne Frage zum unleidigen Pointer Thema: Auf dem Struktur.JPG Bild seht ihr eine relativ komplexe Struktur lightModulesSCA. Ich muss nun ein paar Berechnungen mit den in dieser Struktur vorhandenen Werten machen. Pro LED Cluster muss ich die in dieser Stuktur vorhandenen Werte nehmen, berechnen und in die Struktur CalculatedColorValues abspeichern. Den zugehörigen Code seht ihr auf dem Bild Code.JPG. Kurze Code Erklärung: Um mir viel Schreibarbeit zu sparen hab ich einen Pointer vom TYP CalData (Zeile 139) angelegt und verweise immer auf die nötige Stuktur, in der ich gerade arbeiten will. Die Berechnungen (Zeile 142/143) scheinen auch so zu stimmen. Mein Problem ist jetzt allerdings in Zeile 145: ich möchte gerne meine Berechnungen wieder mittels des Pointers in meine Struktur schreiben, wobei ich immer einen Fehler bekomme: invalid type argument '->' (Natürlich hab ich auch die Varianten '.' ohne * etc. probiert, klappt aber auch nicht) Wenn ich die Daten direkt in die Struktur schreibe siehe Zeile 147 scheint alles zu funktionieren! Kann mir jemand sagen warum das so wie ich das machen will nicht funktioniert?? Eine zweite Frage stellt sich mir noch bezüglich '->' und '.' ich dachte immer das diese Zeichen gleich zu setzten sind. Aber wenn ich in Zeile 142 oder 143 '->' mit '.' tausche erhalte ich ne Fehlermeldung: request for member 'gur'(je nachdem wo ich '->' mit '.' tausche) in something not a structure or union WARUM?? Vielen Dank Greez der baschtel
> Eine zweite Frage stellt sich mir noch bezüglich '->' und '.' ich dachte > immer das diese Zeichen gleich zu setzten sind. wow, das sich bei so einem umfangreichen Projekt noch sooo eine wissenslücke auftut... Lies mal im C-Buch deiner Wahl nach, was die beiden Opteratoren so tun. Dann wird dir bestimmt auch klarer, was in der Zeile schief läuft. Ich steig da auch die schnelle nicht durch die Struktur durch.
1 | pCD->calculatetedColorValues.matrix[0][0] = |
Und das nächste Mal präsentierst du uns Code als Text, und nicht als Bilder.
Sebastian.O schrieb: > Auf dem Struktur.JPG Bild Es wäre besser gewesen, wenn du den Codeausschnitt per Cut&Paste hier eingestellt hättest. Dann könnte man jetzt einfach den Codeausschnitt auf den man sich in der Antwort bezieht wieder rauskopieren, die Änderung machen und dir hier im Forum zukommen lassen. So muss ich alles entweder abtippen oder beschreiben. Beides ist fehleranfällig, umständlich und eigentlich viel Arbeit für uns. > Kurze Code Erklärung: > Um mir viel Schreibarbeit zu sparen hab ich einen Pointer vom TYP > CalData (Zeile 139) angelegt Und als aller erstes wirfst du gleich mal den Cast raus. Cast sind Waffen. Wenn du an dieser Stelle einen Cast benötigst, hast du etwas grundsätzlich falsch deklariert und kaschierst den Fehler, indem du den Compiler dazu zwingst, etwas Falsches zu akzeptieren. > und verweise immer auf die nötige Stuktur, > ich möchte gerne meine Berechnungen wieder mittels des Pointers in meine > Struktur schreiben, wobei ich immer einen Fehler bekomme: invalid type > argument '->' (Natürlich hab ich auch die Varianten '.' ohne * etc. > probiert, klappt aber auch nicht) Lass den ersten * weg Pointer->...->Array[0][0] ist schon der Wert. Und der zweite -> muss ein . sein. calculatedColorValues ist schliesslich eine Struktur und kein Pointer. > Eine zweite Frage stellt sich mir noch bezüglich '->' und '.' ich dachte > immer das diese Zeichen gleich zu setzten sind. Nein. Bittte tu dir selbst einen Gefallen und lies ein C-Buch a->b ist eine andere (bequemere) Schreibweise für (*a).b Aber es ist die Kombination aus *, ( ) und . die identisch ist zu -> > 142 oder 143 '->' mit '.' tausche erhalte ich ne Fehlermeldung: request > for member 'gur'(je nachdem wo ich '->' mit '.' tausche) in something > not a structure or union > WARUM?? Weil du kein C-Buch gelesen hast. Daher fehlen dir die Grundlagen und deshalb verwirrt dich dieser unsäglich grausliche Code.
Asche über mein Haupt! Das nächste mal werd ich den Code direkt in den Text kopieren -> Sorry! >Und als aller erstes wirfst du gleich mal den Cast raus. >Cast sind Waffen. Wenn du an dieser Stelle einen Cast benötigst, hast du >etwas grundsätzlich falsch deklariert und kaschierst den Fehler, indem >du den Compiler dazu zwingst, etwas Falsches zu akzeptieren. Den Cast hab ich nicht gebraucht... Das mit den "Cast Waffen" werd ich mir merken! :-) >Und der zweite -> muss ein . sein. calculatedColorValues ist >schliesslich eine Struktur und kein Pointer. Ich glaub jetzt hab ichs verstanden.. >Bittte tu dir selbst einen Gefallen und lies ein C-Buch Jup, es hat Vorteile zuerst ein C Buch zu lesen! (Auch wenn Ihr mir das jetzt nicht glaubt, das hab ich gemacht aber ist schon ne ganze Weile her, seitdem hab ich auch nie wieder etwas mit c zu tun gehabt, was sich jetzt bitterböse bei mir rächt) Dankö!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.