Zeigervariable an eine Funktion übergeben: pass by ?



  • Bei void fkt(int*); habe ich den int* by value übergeben und gleichzeitig den int by reference.
    Da es wohl um den int geht, würde ich in der Klausur by reference ankreuzen.



  • volkard schrieb:

    Bei void fkt(int*); habe ich den int* by value übergeben und gleichzeitig den int by reference.
    Da es wohl um den int geht, würde ich in der Klausur by reference ankreuzen.

    Behälst du diese Argumentation auch bei void* ?



  • Michael E. schrieb:

    volkard schrieb:

    Bei void fkt(int*); habe ich den int* by value übergeben und gleichzeitig den int by reference.
    Da es wohl um den int geht, würde ich in der Klausur by reference ankreuzen.

    Behälst du diese Argumentation auch bei void* ?

    Klar, warum nicht?



  • volkard schrieb:

    Klar, warum nicht?

    Du kannst dann einen void mit Pointern by reference übergeben, aber nicht mit Referenzen by reference. Find ich nicht schön.



  • volkard schrieb:

    Bei void fkt(int*); habe ich den int* by value übergeben und gleichzeitig den int by reference.
    Da es wohl um den int geht, würde ich in der Klausur by reference ankreuzen.

    Kreuz doch einfach "by value" an und schreib (für den Pointer) dahinter und kreuz "by reference" an und schreibt (für den int) dahinter 😃



  • Michael E. schrieb:

    volkard schrieb:

    Klar, warum nicht?

    Du kannst dann einen void mit Pointern by reference übergeben, aber nicht mit Referenzen by reference. Find ich nicht schön.

    Zeig mir mal einen void.
    Ich denke, der void* wird nur verwendet, um zum Beispiel einen int by reference zu übergeben.





  • volkard schrieb:

    Michael E. schrieb:

    volkard schrieb:

    Klar, warum nicht?

    Du kannst dann einen void mit Pointern by reference übergeben, aber nicht mit Referenzen by reference. Find ich nicht schön.

    Zeig mir mal einen void.

    Den musst du mir zeigen, wenn du für void keine Ausnahme deiner Regel einführen willst. Du siehst also, dass Inkonsistenzen auftreten.

    Ich denke, der void* wird nur verwendet, um zum Beispiel einen int by reference zu übergeben.

    Verstehe ich nicht. Wo wird void* verwendet?



  • Michael E. schrieb:

    Verstehe ich nicht. Wo wird void* verwendet?

    Erinnere Dich an generische Funktionen in C.
    Der void* wird verwendet, um den echten Typ, auf den gezeigt wird, nicht verraten zu müssen.
    Und mit diesem Wissen sehe ich eben keine Inkonsistenz. Und selbst wenn, ich würde die Meinung des Profs treffen und die 1 schreiben.



  • volkard schrieb:

    Michael E. schrieb:

    Verstehe ich nicht. Wo wird void* verwendet?

    Erinnere Dich an generische Funktionen in C.
    Der void* wird verwendet, um den echten Typ, auf den gezeigt wird, nicht verraten zu müssen.
    Und mit diesem Wissen sehe ich eben keine Inkonsistenz.

    Siehst du "void" also nur als Platzhalter für den richtigen Typen? Dann wird das System also noch ein wenig komplizierter. Du siehst also, dass es deutlich einfacher wäre, Pointerübergabe als Wertübergabe zu betrachten.

    Und selbst wenn, ich würde die Meinung des Profs treffen und die 1 schreiben.

    Das kommt sicherlich auf den Prof an.



  • Ich staune hier im Unterforum C++ immer wieder neu, wenn es um simple Grundlagen von C geht. Diese gehören implizit auch zu C++, obwohl man sie in C++ nicht mehr braucht.

    ➡ pass by value: Es wird der Funktion der Wert übergeben. Die Funktion erhält den Wert, kann ihn verwenden, aber nicht verändern.
    ➡ pass by reference: Es wird der Funktion der Zeiger auf einen Wert übergebenen. Die Funktion kann den Wert dereferenzieren, verwenden, und verändern.
    ➡ Eine Referenz ist auch eine Variable, nämlich eine Position im Speicher. Wenn man weiss, was dort drinsteht, kann man damit sehr viel anfangen.

    Bitte Bücher, Dokumentationen, oder Tutorials lesen. Ist doch überall alles mit Beispielen bestens erklärt!

    daddeldu! :p



  • berniebutt schrieb:

    ➡ pass by reference: Es wird der Funktion der Zeiger auf einen Wert übergebenen.

    Nein. Eine Referenz ist kein Zeiger.

    ➡ Eine Referenz ist auch eine Variable, nämlich eine Position im Speicher.

    Nein, das fordert der Standard nicht.



  • Referenzen sind nicht mal Objekte. Referenzen sind Namen. Sie müssen nicht mal im Speicher vorhanden sein.



  • Es gibt auch Leute, die behaupten, Werte (resp. Literale) seien Objekte. Alles eine Frage der Perspektive also.



  • Es gibt auch Leute, die Jürgen Wolf vergöttern. Dadurch wird er nicht besser.



  • Und was hat das miteinander zu tun? Stellst du Smalltalk-Programmierer auf eine Stufe mit JW? Diffamierend 🙂



  • Ich wollte damit ausdrücken, dass etwas nicht richtiger wird, wenn viele Leute das behaupten. Dazu gehört z.B. auch, dass viele Leute "das Trinken" sagen. "Gib mir mal mein Trinken" ... usw. 😉



  • 314159265358979 schrieb:

    Ich wollte damit ausdrücken, dass etwas nicht richtiger wird, wenn viele Leute das behaupten. Dazu gehört z.B. auch, dass viele Leute "das Trinken" sagen. "Gib mir mal mein Trinken" ... usw. 😉

    Lustig, dass du mit der deutschen Sprache kommst. Denn da ist es genau so, dass die Allgemeinheit die Sprache definiert.



  • Wenn also eine riesige Menschenmenge statt "Michael" nun "uhg34878g4ifg3i4g" sagen würde, so wäre das dann richtig? 🤡



  • Wenn du mir jetzt noch erklären würdst, warum Leute, die behaupten dass Werte Objekte sind nicht richtig liegen, dann wird ein Schuh draus 🙂


Anmelden zum Antworten