c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

Re: [ct-bot] Problem mit Pointern

Absender: Torsten Evers
Datum: Sa, 01.04.2006 20:56:45
In-reply-to: <BCF016D5ED5AC34FBB655D109519ABCF083DFB@xxxxxxxxxxxxxxxxxxxx>
References: <BCF016D5ED5AC34FBB655D109519ABCF083DFB@xxxxxxxxxxxxxxxxxxxx>


Hallo Carsten,

Am Samstag, 1. April 2006 19:57 schrieb Carsten Giesen:
> Ich bräuchte mal bitte Hilfe. Da ich den Code von AVR übernommen habe, tue
> ich mich schwer den Fehler zu finden.
[...]
>
> Hier rufe ich eine Routine auf:
>
> 	state = Get_byte(data_pack[i].data_ptr++,j);
[...]
> 	*rx_ptr = TWDR;

> Das Problem ist, das der Werte den ich lese, nicht in
> "data_pack[i].data_ptr++" ankommt.
nun, wo schaust du denn nach wenn die Funktion zurückkehrt? Wenn Du in 
data_pack[i].data_ptr schaust, ist das klar, dass da kein Wert steht (wenn 
nicht, entschuldige die simple Vermutung aber sicher ist sicher ;) ).
Du übergibst den Parameter ja mit Postinkrement-Operator, d.h. der Zeiger 
zeigt nach dem Aufruf auf den nächsten Character-Wert, d.h. eine 
Speicherstelle weiter. 

Hier ein kleines Testprogramm, das das verdeutlichen soll:

#include <stdio.h>

void testit(char* foo) {
        *foo='a';
}

int main() {
        char test[]="123456789";
        char *ptr=test;

        printf("String vorher: %s\n",test);
        testit(ptr++);
        printf("Zeiger zeigt auf: %c\n",*ptr);
        printf("String nacher: %s\n",test);
}

Schöne Grüße,

Torsten Evers