Pointerfrage

Gast #2517099
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
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.