Hallo! Ich mal ein Frage zu Zeigern. In diesem Thema bin ich noch nicht so fit, sodaß ich lieber noch einmal nachfrage. Folgende Situation aus einem Programmausschnitt, den ich verwenden muss: struct tm*ptim; int tm_sec; int tm_min; ... scanf("%d", &ptim -> tm_sec); scanf("%d", &ptim -> tm_min); Ich möchte gerne den Wert nicht über die Tastatur einlesen, sondern den Wert direkt, als Variable übergeben. Kann mir jemand damit weiterhelfen? Falls Info´s fehlen, kommen diese umgehend! Danke...
Ich vermute mal, daß tm_sec und tm_min Elemente der Struktur tm sein sollen. Eine Wertzuweisung sieht dann so aus: ptim->tm_sec = 0; ptim->tm_min = 36;
Richtig, tm_sec und tm_min sind Elemente einer Struktur ! Allerdings mekkert mein Compiler; keil µV3 da exppression must be a modifiable lvalue Kannst Du mir da weiterhelfen?
Poste bitte, bitte, bitte dein vollständiges Program. Falls das zu lang sein sollte (eigenes Ermessen), dann kürze es so, dass alles für das Problem nicht wesentliche rausfällt. Pointer sind eigentlich ganz einfach: Jede Variable bzw. überhaupt jedes Ding muss ja irgendwo gespeichert sein. Daher hat es auch eine Adresse. Das ist so, wie wenn du eine Postanalage in einem Hochhaus hast: Dort gibt es einen Haufen Postfächer und in jedem Postfach liegt ein Zettel. Jeder Zettel ist eine Speicherplatz auf dem du was draufschreiben kannst. Durch die Nummer der Postfaches hat daher jeder Zettel eine Adresse, die ihn eindeutig identifiziert. Auf manchen Zettel steht jetzt drauf: 'tatsächliche Information im Postfach xyz'. Genau das sind Pointer. Anstatt dir also zu merken, wo eine bestimmte Information gespeichert ist, legst du sie in irgendein Postfach und schreibst auf den Zettel im Fach 100 (nur als Beispiel) drauf, wo du die eigentliche Information abgelegt hast. Brauchst du die Information wieder, so musst du nicht wissen, in welchem Fach die war. Du gehst einfach zum Fach 100 und schaust nach in welchem Fach das liegt was du suchst.
Ich kenne den keil µV3 nicht und weiss nicht, für welches System du kompilierst. Kann es sein, dass in der struct tm die Variablen tm_sec und tm_min als "const int" deklariert sind? Oder dass diese auf ein read-only Register zeigen? "exppression must be a modifiable lvalue" sieht danach aus, dass ptim->tm_sec zwar ein gültiger Ausdruck ist, aber als linke Seite (lvalue) einer Zuweisung nicht verändert werden kann. Poste mal die Deklaration der struct tm.
Hallo ! Also ich habe mal das ganze pdf mit geladen. Dort erkennt man die Zusammenhänge auf Seite 7/9. Wie ich bereits erwähnte, möchte ich die Parameter für tm_sec tm_min tm_hour nicht über die Tastatur, sondern mittels einer Variabe übergeben. Allerdings funktioniert dieses nicht! Ich hoffe, dieses hilft Euch weiter. Bedanke mich im Vorraus!
Wenn du ein Problem in deinem Code hast, denkst du nicht, dass du uns deinen Code zeigen solltest? Und zwar nicht nur in winzig kleinen Ausschnitten, sondern so, dass man die Zusammenhänge und Datentypen zumindest erkennen kann. Ist das wirklich so schwer zu verstehen?
Jau, da hat Karl Heinz völlig recht. Ansich ist Dein Problem ganz schnell zu lösen. Aber so rein hypothetisch ohne konkrete Zeilen wirds schwer zu erklären...
...rufus hats anfangs weiter oben schon geschreiben: > ptim->tm_sec = 0; > ptim->tm_min = 36; so würd ichs auch machen, und avr-gcc zumindest mag das auch so! Selbst die ST docu beschreibt das auf Seite 7/9 in irgendeiner codezeile so: > ptim->tm_year-=1900; also eigentlich auch genau das gleich! Ohne Problem-Code gehts ab hier nur schwer weiter... Gruß Micha,
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.