Funktionen und Zeiger und Structuren



  • Moin,

    Ist es möglich Structuren ganz einer funktion zu übergeben?
    Also:

    struct pass {
    int alter;
    int groeße:
    
    strcut pass x;
    
    };
    
    void allesausgeben( // welchen datentyp müsste man dann hier hinschreiben, um die Structur zu übergeben// * x;)
    {
       cout << x.alter << x.groeße << endl;
    }
    
    oder muss man es ganz anderes machen, man könnnte ja auch nur einen parameter
     der Structur übergeben, und dann mithilfe von zeigern 
    die addresse immmer um was erhöhen, sodass er auf den nächsten Parameter zeigt.
    
    Ich hatte mir das ungefähr so vorgestellt.
    [cpp]
    struct pass {
    int alter;
    int groeße:
    
    };
    
    struct pass x;
    
    allesausgeben( int y)
    {
        int *zeiger;
        zeiger=&y;
        zeiger=zeiger+2 // ich erhöhe die adresse hier um 2, da ich ja weiß wie groß
        die Datentypen sind, und da die 2 byte sind müsste ich so doch theoretisch 
        auf den nächsten wert kommen.
    // jetzt wurschtel ich mit den variablen rum
    }
    

    Also soh sähe das dann in der Praxis aus:

    [cpp]
    // gleiche Funktionen und Structuren wie oben

    allesausgeben(x.alter)
    //folgendermaßen müsste es dann in der function ablaufen
    {
    int *zeiger;
    zeiger=&x.alter;
    cout << x.alter;
    zeiger=zeiger+2; // jetzt ehöhe ich die addresse umd 2 bytes, also müsste der
    zeiger nun theoretisch auf den wert x.groeße zeigen;

    cout << *zeiger;
    }

    [cpp]

    Ich hoffe ihr versteht was ich damit sagen will und hoffe ihr könnt mir helfen.
    Aber wenn ich noch irgendwo einen Grundliegenden Denkfehler habe sagt es mir bitte. Aber vieleicht gibt es ja ein viel einfacherer Lösund.

    Thx schonmal im Voraus



  • Um eine Struktur komplett zu übergeben, musst du diese einfach als Parameter in den Funktionekopf schreiben.

    struct test
    {
    int i;
    };

    void func(test& temp)
    {
    temp.i = 15;
    return;
    }

    int main()
    {
    test bla;

    func(bla);
    return(0);
    }



  • Schau dir mal typedef an, ich kanns ausm Kopf nicht, aber damit machst du aus einer Struktur einen eigenen Typ.



  • estartu_de schrieb:

    Schau dir mal typedef an, ich kanns ausm Kopf nicht, aber damit machst du aus einer Struktur einen eigenen Typ.

    struct definiert doch bereits einen Typ. Was willst du also mit typedef?

    Stiffy schrieb:

    zeiger=zeiger+2; // jetzt ehöhe ich die addresse umd 2 bytes, also müsste der

    Nein, das wäre nur auf einer Plattform so, wo 1 int = 1 byte. Schau dir im Tutorial deiner Wahl mal an, wie Zeigerarithmetik funktioniert.


Anmelden zum Antworten