Forum: Mikrocontroller und Digitale Elektronik for schleife mit pointer


von René P. (speedy909)


Lesenswert?

Hallo,

Ich versuche gerade zu verstehen wie man mit einem pointer (Zeiger) 
arbeitet, aber irgendwie funktioniert meine for schleife nicht. Hat 
jemand einen Tipp für mich?
1
#include <avr/io.h>
2
#include <stdio.h>
3
4
#include "warte.h"
5
6
int main (void)
7
{
8
 //porteinstellungen
9
 DDRB = 0x02;              //PB1 als Ausgang
10
 PORTB = 0x00;              //pullups ausschalten
11
 DDRC = 0x23;              //PC0,1,5 als Ausgang
12
 PORTC = 0x00;            //pullups ausschalten
13
 DDRD = 0xF8;              //PD3,4,5,6,7 als Ausgang
14
 PORTD = 0x00;            //pullups ausschalten
15
16
 volatile unsigned int istpos;
17
 volatile unsigned int *p_istpos;
18
19
 p_istpos = &istpos;
20
21
22
 // for (istpos = 0; istpos <= 5; istpos++)  funktioniert
23
 for (*p_istpos = 0; *p_istpos <= 5; *p_istpos++)    //funktioniert nicht
24
 {
25
  PORTC |= (1<<PC0);
26
  warte_ms(200);
27
  PORTC &= ~(1<<PC0);
28
  warte_ms(200);
29
 }
30
}

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

*p_istpos++
Welcher Operator hat denn da eigentlich Vorrang?

Steht da sowas:   *(p_istpos++)
Oder das da:      (*p_istpos)++

Inkrementierst du also den Pointer?
Oder den Inhalt der Speicherstelle, auf die der Pointer zeigt?

von Nico S. (nico22)


Lesenswert?

Es muss heißen:

(*ptr)++, dann funktioniert es.

Was *ptr++ macht, ist, den Pointer zu inkrementieren. Das möchtest du ja 
nicht.
In C gibt es glücklickerweise eine wohldefinierte Operatorreihenfolge.

von René P. (speedy909)


Lesenswert?

O mann! Ich kriege eine Kriese... ich habe über eine Stunde lang nach 
einem Fehler gesucht und nicht gefunden :(

Wenn ich also meine for schleife so ändere müsste der pointer bevorzugt 
werden.
for (*p_istpos = 0; *p_istpos <= 5; (*p_istpos)++)

Ich habe an alles gedacht, nur nicht an so eine simple Lösung meines 
Problems.

Danke! Werde das morgen mal testen...

schönen Abend
Gruß Speedy909

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> O mann! Ich kriege eine Kriese

http://de.wikipedia.org/wiki/Kriese

(du meinst aber wahrscheinlich eine Krise ohne "e")

von René P. (speedy909)


Lesenswert?

Wegstaben Verbuchsler schrieb:
>> O mann! Ich kriege eine Kriese
>
> http://de.wikipedia.org/wiki/Kriese
>
> (du meinst aber wahrscheinlich eine Krise ohne "e")

LOL, habs nicht so mit der Rechtschreibung :P ich schreibe lieber 
"Linksherum"

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
Noch kein Account? Hier anmelden.