fehler beim kompilieren void g(*p) (anfänger, einfaches problem)



  • Hallo,

    hab in der schule eine aufgabe bekommen, sieht eigentlich ganz leicht aus, aber es scheitert leider schon am compilieren 😞

    der fehler kommt bei void g(*p). Dachte ich mir, gut mache ich int g(*p) draus, aber dann wird p immer noch nicht erkannt.

    Ich bin noch Anfänger, wäre gut, wenn ihr einen Tipp hättet!

    Hier die Aufgabe (nein, ich will ja nicht die lösung, sondern nur wissen wie man es kompiliert)

    Aufgabe 1 (Punkte: 5)
    Welche Werte stehen in der Variablen n an den 5 im Programm mit // ***
    n= gekennzeichneten Stellen. Es soll immer die jeweils fur diesen Block gultige
    Variable n ausgewertet werden.
    #include <iostream>
    using namespace std;
    int n = 3;
    int f(int n) {
    n++;
    // *** n=
    if (n > 2)
    n = n << 2;
    //*** n=
    return n;
    }
    void g(*p) {
    (*p)--;
    n += 5;
    // *** n=
    return n;
    1
    }
    int main () {
    int n = 7;
    int k = f(n);
    //*** n=
    g(&n);
    //*** n=
    return 0;
    }

    schonmal vielen dank und noch einen schönen Sonntag ! 🙂



  • Ich habe
    jetzt
    keine
    un-
    mittelbare
    Lösung
    für
    Dein Pro-
    blem anzu-
    bieten. Ab-
    er evtl.
    rückst du
    bess-
    er mal dei-
    n Code
    ein biss-
    chen ein
    und machst
    Di-
    r ged-
    anken d-
    arüber was
    *p für ei-
    nen Typ hat
    wenn d-
    u schrei-
    bst int
    f(*p) {}
    MfG
    Mi-
    chael



  • *smile*,
    son eingerückter code hat was...............

    :xmas1: :xmas2:



  • entschuldigung, kam vom kopieren.

    #include <iostream>
    using namespace std;
    
    int n = 3;
    int f(int n) {
        n++;
       // *** n=
    
       if (n > 2)
       n = n << 2;
       //*** n=
       return n;
      }
    
    void g(*p) {
      (*p)--;
       n += 5;
       // *** n=
       return n;
       }
    
    int main () {
       int n = 7;
       int k = f(n);
       //*** n=
       g(&n);
       //*** n=
       return 0;
    }
    


  • void g(*p) { ... }
    

    Wie gesagt, was soll das bedeuten? Willst du der Funktion einen Zeiger auf ein int übergeben? Dann musst du natürlich

    void g(int *p) { ... }
    

    schreiben. Ansonsten hast du einen Zeiger auf... ja auf was eigentlich?

    Grüße,
    Michael



  • das weiß ich ja selbst nicht, was es bedeuten soll. es war so vorgegeben. evt. ein fehler in der vorlage.

    vielen dank für deine hilfe und noch einens chönen sonntag!



  • Decimad schrieb:

    Ich habe
    jetzt
    keine
    un-
    mittelbare
    Lösung
    für
    Dein Pro-
    blem anzu-
    bieten. Ab-
    ...

    😃 ...
    Also mach mal aus der Zeile

    void g(*p) {
    

    folgendes :

    int g(int *p)
    

    Wie Decimad schon erwähnte, dein Zeiger zeigt eig. auf, naja, nichts. Und da du was zurückgeben willst, musst du die Funktion mit dem Rückgabetyp "int" definieren. Würde "void" da stehen, könnte man einzigst und alleine nur

    return;
    

    schreiben. Außerdem verstehe ich den Sinn der Variable "n" nicht. Du übergibst "n" ein paar Mal aus der "main()" heraus und hast aber noch eine globale Variable "n". Komischer und schlechter Code.
    Mit freundlichen Grüßen : FreakY :xmas1:


Anmelden zum Antworten