Um dich nicht zu sehr zu verwirren:
Serenifly hat recht, aber editignoriere doch einfach seinen 2. Vorschlag
Oder du machst das:
[ Code ]
Du hast dann erstmal 123 Pointer auf CMD_Records mit je 2 Byte ...
Der wäre tatsächlich zwar richtig, aber verwirrend, und bringt keinerlei Vorteil ...
(
Ich könnte dir noch verwirrendere Speicherbelegungsmöglichkeiten empfehlen, z.B eine Kette von Elementen, bei denen jedes auf einen Nachfolger zeigt ...
struct CMD_record
{
int Dir;
int Steps;
int Speed;
CMD_record* next;
};
)
-- sorry, vergiss es:
Es muss doch irgend wann mal einen Zeiger geben, der auf einen zusammenhängen Speicherbereich zeigt, in dem z.B 123 Strukturen zu je 6 Byte liegen ? Also 738 Byte zusammen.
Ja, das ist der Inhalt von Serenifly's erstem Vorschlag
CMD_Record* CMD_Sequence = (CMD_Record*) calloc (NumSeq * (sizeof (CMD_Record));
Das belegt (NumSeq = 123) * 6 byte, und löscht diese. CMD_Sequence ist die Startadresse, oder die Adresse des ersten Elements.
CMD_Sequence[0] ist dieses Element selbst
CMD_Sequence[1] ist das folgende Element, das im Speicher direk dahinter liegt, usw.
Wie castet man nun in C
?
(CMD_Record*)
Damit sagst du dem Compiler, dass dir bewusst ist, dass der "Zeiger auf was_weisss_ich" ( void* ) , den calloc zurückliefert, als Zeiger auf ein CMD_Record behandelt werden soll.
Ist C denn so schwer ? ![]()