Forum: Mikrocontroller und Digitale Elektronik Pointerfrage


von Ingo (Gast)


Lesenswert?

Hallo,
ich habe eine allgemeine Frage:
1
void test(unsigned int *var)
2
{
3
 temp = *var;
4
}

und
1
void test(unsigned int var)
2
{
3
 temp = var;
4
}

Wann ist es sinnvoll Variante1 und wann Variante2 zu nehmen? Beim LCD 
macht man dass ja mit Pointer (Variante1). Aber wann genau bringt 
Variante2 Vorteile gegenüber Variante1?



Grüße,
Ingo
von Karl H. (kbuchegg)


Lesenswert?

Die Frage ist falsch formuliert.

Man benutzt Pointer, wenn man sie benutzen muss und nicht einfach nur so 
zum Spass.
In deinem ersten Beispiel gibt es keinen Grund, da einen Pointer zu 
übergeben, also tus auch nicht.
von Thomas B. (nichtessbar)


Lesenswert?

Pointer sind sinnvoll, wenn du:
- Mehrere Werte zurückgeben willst (Call by Reference)
- Mit großen Datentypen hantierst (wo eine Kopie zu erstellen lang 
dauert / viel unnötigen Speicher verbraucht)
- Arrays
- Du in einer Funktion rückwirkende Änderungen am ursprünglichen Datum 
vornehmen willst
- Du nur einen Pointer hast (dynamisch allokierter Speicher etc.), was 
aber mit Arrays gleichkommt...

Pointer sind nicht sinnvoll wenn:
- Du fragen musst, wann Pointerübergabe und wann Wertübergabe sinnvoll 
ist (dann wirst dir auch mit dem Dereferenzieren und dem Grundgedanken 
dahinter schwer tun)
- unsigned char, unsigned int
- temporäre Veränderungen am Parameter durchgeführt werden, der aber 
nach Abarbeitung der Funktion den gleichen Wert wie vor Aufruf haben 
soll
von Ingo (Gast)


Lesenswert?

Alles klar, danke!



Ingo
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.