Pointer / Referenzen als Parameter



  • Hey Leute, ich wollte mal nachfragen, wann es angebarcht ist Pointer zu benutzen und wann man lieber Referenzen als Parameter benutzen sollte??
    Danke für jede Hilfe 🙂

    -GhostfaceChilla-



  • ganz pauschal: pointer, wenn man auch null übergeben können soll. ansonsten referenzen.



  • Eigentlich sollte man Pointer immer vermeiden, wo es nur geht.
    Ich habe noch nie Zeiger als Funktionsparameter verwendet.
    Allerdings könnte sich das anbieten, wenn, wie mootex schon gesagt hat, ein Parameter nicht angegeben werden muss.
    D.h., man kann es als zusätzliche Option verwenden.


  • Mod

    Sone schrieb:

    Eigentlich sollte man Pointer immer vermeiden, wo es nur geht.

    Warum? Pointer sind cool. Können auf Sachen zeigen oder auch nicht. Ohne Pointer bekommst du überhaupt keine höheren Datenstrukturen hin.

    Ich habe noch nie Zeiger als Funktionsparameter verwendet.

    Du übertreibst wieder aus deinen eigenen spärlichen Erfahrungen und ein paar im Forum aufgeschnappten Sätzen, die du nicht richtig verstanden hast. Man verwendet keine Pointer, wo man sie nicht braucht. Aber wo man sie braucht, da braucht man sie 😃 .

    Hier im Forum haben wir eben sehr oft den Fall, das jemand Pointer a la Java für alles benutzt. Das ist natürlich Unsinn, da man dadurch leicht unnötige Probleme bekommt. Und wenn man dann ein Problem hat, dann fragt man natürlich hier im Forum nach.



  • SeppJ schrieb:

    Sone schrieb:

    Eigentlich sollte man Pointer immer vermeiden, wo es nur geht.

    Warum? Pointer sind cool. Können auf Sachen zeigen oder auch nicht.

    void foo(int* a)
    {
        //Zeigt der jetzt auf etwas oder nicht?
    

    Ich habe noch nie Zeiger als Funktionsparameter verwendet.

    Du übertreibst wieder aus deinen eigenen spärlichen Erfahrungen und ein paar im Forum aufgeschnappten Sätzen, die du nicht richtig verstanden hast. Man verwendet keine Pointer, wo man sie nicht braucht. Aber wo man sie braucht, da braucht man sie.

    Nope. Ich seh mir gerade Projektcode an, und - tja - ich verwende einen Haufen 😮


  • Mod

    Sone schrieb:

    SeppJ schrieb:

    Sone schrieb:

    Eigentlich sollte man Pointer immer vermeiden, wo es nur geht.

    Warum? Pointer sind cool. Können auf Sachen zeigen oder auch nicht.

    void foo(int* a)
    {
        //Zeigt der jetzt auf etwas oder nicht?
    

    Kommt drauf an, was die Funktion macht und was a sein soll. Ohne Kontext nicht beantwortbar.



  • SeppJ schrieb:

    Sone schrieb:

    SeppJ schrieb:

    Sone schrieb:

    Eigentlich sollte man Pointer immer vermeiden, wo es nur geht.

    Warum? Pointer sind cool. Können auf Sachen zeigen oder auch nicht.

    void foo(int* a)
    {
        //Zeigt der jetzt auf etwas oder nicht?
    

    Kommt drauf an, was die Funktion macht und was a sein soll. Ohne Kontext nicht beantwortbar.

    Ich will a dereferenzieren und mit seinem Wert arbeiten.

    Siehe übrigens oben, ist editiert.... 😃

    Wir gehen hier OT. Ich gestehe ein (mal wieder), dass Pointer auch ihren Nutzen haben, aber meine Aussage ist nach wie vor richtig. Referenzen sollte man, wenn beide Varianten möglich sind, bevorzugen.


  • Mod

    Sone schrieb:

    Ich will a dereferenzieren und mit seinem Wert arbeiten.

    Dann wäre eine Referenz angemessen 🙂 . Ich habe nicht gesagt, dass man überall Pointer braucht. Oder gar, dass sie überall nützlich wären, wo man sie benutzen könnte. Sie sind aber definitiv nicht von Natur aus Schweinkram, bloß ihr häufiger Missbrauch.



  • Um hier noch etwas hinzuzufügen.

    Bei Atomare-Datentypen (int, double ...) sollte eine Referenzierung vermieden werden (sofern kein Rückgabeparameter) - da das einfache kopieren schneller ist, wie wenn der Prozessor noch die Referenz dafür auflösen muss.

    Meiner Ansicht nach, wie eben schon besprochen für komplexe Datentypen, wenn der Übergabeparameter nie NULL sein darf -> Referenz, sonst eben Pointer.


Anmelden zum Antworten