Zeiger: Sinn | Unsinn.



  • rafa schrieb:

    Es ist für wahr: PASCAL kennt den Pointer. Und das ist erschreckend

    Das ist hoffentlich ein Scherz. Ohne Zeiger könntest du in Pascal keine dynamischen, rekursiven Datenstrukturen wie Bäume oder Listen aufbauen.



  • @Bashar: Mein Schwerpunkt lag bisher in Visual Basic 6 / 7 und da gibt es 'standardmäßig' (sieht man mal von WinAPI-Umwegen und ASM-Addon ab) keine Zeiger (dafür Referenzen), dennoch habe ich sehr wohl Bäume, Listen und rekursive Strukturen erstellt. Es geht bis zu einem gewissen Grad auch ohne Referenzen und Zeiger, nur ist es langsamer. - PASCAL und DELPHI nutzte ich in anderen Bereichen, wo Zeiger nicht aufkamen (bzw. ich die Notwendigkeit bisher nicht sah).

    Ergänzend: Wie gesagt, vieles (sehr vieles) geht mit und ohne Zeiger.



  • rafa schrieb:

    Es geht bis zu einem gewissen Grad auch ohne Referenzen und Zeiger, nur ist es langsamer.

    klick & bunti kann jeder .. 😋 effizienz ist das A und O beim programmieren



  • 1ntrud0r: Da stimme ich Dir zu. Nur lassen wir mal eine mögliche (sich anbannende) Diskussion über Visual Basic vs. C++. 😉 Ergänzend: Das 'A und O' der Programmierung ist Projektzeit und Effizienz denke ich, daher VB mit C++ (bei uns im Unternehmen).



  • rafa: "Referenzen" und Zeiger sind in dem Zusammenhang relativ gleichwertig. Ich würde nur das Wort "Referenz" in diesem Forum gern vermeiden, wenn ich von anderen Referenzen als C++-Referenzen spreche (diese sind nämlich nicht gleichwertig zu Zeigern).
    Ausserdem vergißt du, dass Pascal auch keine "Referenzen" hat.



  • Gut, vielleicht bist Du in PASCAL / DELPHI mehr fit als ich (wovon ich ausgehe), aber wie sieht es mit der function(var x: integer) aus? Wie in VB mit ByRef und ByVal, nicht? (Aber ich mag mich irren.)

    http://www.informatik.fh-muenchen.de/~schieder/programmieren-1-ws95-96/stack-beispiel.html

    Ergänzend: Der Begriff 'Referenz' im Zusammenhang mit Zeigern (und sogar Arrays) ist mir erst durch C++ klar geworden, daher stimme ich mit Dir absolut überein. (Obige Äußerung von Dir.)



  • Ich kenne VAR, aber das ist natürlich kein Datentyp, und ausserdem eher mit C++-Referenzen als mit "Referenzen" im Sinne von Java, C# oder VB (sofern ich dein "keine Zeiger (dafür Referenzen)" richtig verstanden habe) zu vergleichen. Ich mach mal eine verkettete Liste in einer Sprache, die Pointer hat, und in einer, die "Referenzen" hat.

    // mit Pointern:
    struct Node { int data; Node * next; };
    void output_list(Node * np) { 
      while (np) {
        cout << np->data << endl; 
        np = np->next;
      }
    }
    
    // mit "Referenzen"
    // Achtung: Kein C++ mehr, das ist jetzt Pseudo-Code, eher Java-ähnlich
    struct Node { int data; Node next; }
    void output_list(Node theNode) { 
      while (theNode != null) {
        print(theNode.data);
        theNode = theNode.next;
      }
    }
    

    Du siehst, es ist prinzipiell egal, ob man C/C++-mäßige Pointer oder Java-mäßige Referenzen hat (deshalb nenn ich gerne beides einfach nur Pointer, wenn grad keiner guckt), aber man braucht sowas in jeder imperativen Sprache. Pascal hat letzteres nicht -- wenn es auch keine Pointer hätte, wär es als Allzweckprogrammiersprache völlig ungeeignet (es hat natürlich welche.)



  • Ja genau, eben wie in VB. - Nun gut, wenn man Deine Begriffsdefinition nimmt hast Du natürlich recht. 😉 Danke für die Dein Feedback.


Anmelden zum Antworten