Funktionszeiger



  • Hi,
    da 1.Post kurz zur Ausgangslage und meinem Hintergrund. Ich studiere Mechatronik und besuche im Fach Informatik zwangsläufig auch die C- Programmierung- Vorlesungen. Ich habe in früherer Zeit im Zuge meines Technikers schon C++ programmiert und dies erschien mir etwas einfacher bzw. intuitiver als C. Naja vll. war ich auch einfach jünger und lernwilliger:-)
    Nun zu meinem eigtl. Problem:

    Ich blicke beim Themengebiet Zeiger und Funktionen einfach nicht richtig durch. Ich soll ein Programm schreiben, in welchem ich mithilfe der Funktion
    *grey(int *image, int b, int h) etwas berechnen muss. Leider blicke ich einfach nicht durch wie nun der Funktionsaufruf im main Teil aussehen muss. Was gebe ich da wie mit? Und vor Allem wie gebe ich das dann wieder zurück?

    Vielen lieben Dank im Vorraus
    Benni



  • So hatte offensichtlich verpasst mich einzuloggen:-)



  • *grey(int *image, int b, int h)

    Da fehlt was, beispielsweise der Rueckgabewert.



  • Beim Rückgabewert fehlt der Datentyp. So wie es aussieht, soll die Funktion einen Zeiger zurückgeben, aber auf was für einen Typ?



  • Dir fehlen rudimentärste Grundlagen. Das steht ganz sicher in den Unterlagen zur Vorlesung bzw. deiner Mitschrift.



  • Ja das mir Grundlagen fehlen, das weiß ich schon. Bin ja auch gerade mehr oder weniger dabei mir durch Probieren das Ganze anzueignen.
    Das mit dem fehlenden Rückgabewert verstehe ich nicht.
    Die Funktion:

    int *grey(int *image, int b, int h)
    {
    //eigentliche Funktion
    return ??;
    }

    void main (void)
    {
    int b,h;
    int *image;
    //Funktionsaufruf
    grey(*image,b,h);
    }

    Ich bekomme es hin, normale Funktionen aufzurufen und auch Werte zu übergeben und wieder rückzugeben. Aber mit Pointern.....AHHHHHHHHHHHH
    Das treibt mich gerade zu Weißglut 😡



  • Pointer werden behandelt wie andere Variablen auch. Das * brauchst du nur, wenn ein Pointer deklariert wird, oder wenn du zugreifen willst, auf was er zeigt.



  • Vielen Dank dafür. Wieso muss alles immer so komplex ausgedrückt werden, wenn es auch einfach geht. Funktion funktioniert....DANKE 😃 😃



  • durch Probieren das Ganze anzueignen

    Das ist der falsche Weg.



  • Wieso? Ich finde wenn ich Sachen "Anfassen/Sehen" kann, kann ich am besten Lernen und Verstehen. Ich denke mal das muss jeder für sich selbst entscheiden, wie er sich am Besten Wissen aneignet. Ich finde das Programmieren eine recht trockene Angelegenheit darstellt. Der Spaß und die Motivation mir unter Umständen sogar noch mehr als das geforderte Maß beizubringen, bekam ich definitiv durch das Variieren und Manipulieren von vorgegebenen Sachverhalten.



  • oehm2007 schrieb:

    Wieso?

    Weil du beim Probieren nicht immer merkst, wenn es falsch ist. Die einfachsten Fehler findet der Compiler, die nächste Riege bringt dein Programm direkt zum Absturz, aber alle anderen Fehler führen vielleicht irgendwann zu schlecht reproduzierbaren Abstürzen, Sicherheitslücken, Speicherlöchern oder unsinnigen Ergebnissen.



  • Kann ich aus leidlicher Erfahrung bestätigen... 😞


Anmelden zum Antworten