pointer auf struct struct

Gast #2396955
Lesenswert?

Ich habe eine einen Zeiger auf eine Struktur namens 
"received_packets_struct" (ähnlich einer einfach verketteten Liste). 
Diese Struktur enthält eine zweite Structur namens "DataPacketStruct" 
und einen Zeiger auf die nächste Struktur in der Liste:
1
struct DataPacketStruct
2
{
3
  unsigned char start_byte;
4
  unsigned char sender_address;
5
  unsigned char receiver_address;
6
  unsigned char msg_type;
7
  unsigned char LSB;
8
  unsigned char MSB;
9
  unsigned char crc;
10
}; 
11

12
struct received_packets_struct
13
{   
14
  struct DataPacketStruct value;
15
  struct received_packets_struct *next;
16
};

Nun möchte ich eine Funktion "append" schreiben die als Paramter einen 
Zeiger auf "received_packets_struct" sowie auf "DataPacketStruct" 
erhält.
1
struct DataPacketStruct new_packet = {1, 1, 1, 2, 2, 2, 3};  
2
struct received_packets_struct *start_elem = NULL;
3

4
append(&start_elem, &new_packet);

Mein Problem ist der Zugriff auf die Struktur DataPacketStruct innerhalb 
received_packets_struct. Wie mache ich das richtig?
1
void append(struct received_packets_struct **start_elem, struct DataPacketStruct *new_elem)
2
{
3
  struct received_packets_struct * tmp;
4
  tmp = *start_elem;
5
  if(*start_elem == NULL)
6
  {
7
    if((tmp = malloc(sizeof(struct received_packets_struct))) == NULL)
8
    {
9
      printf("Speicher voll");
10
      return;
11
    }
12
    tmp->value->start_byte = new_elem->start_byte; //<- hier steckt das Problem   "Left operand of -> has incompatible type 'struct DataPacketStruct'."
13

14
    tmp->next = NULL;
15
    *start_elem = tmp;
16
  }
17
...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren