c++ Struct einer Funktion als Zeiger übergeben

  1. steffenmauch

    steffenmauch Thread Starter MacUser Mitglied

    Mitglied seit:
    02.09.2005
    Beiträge:
    28
    Zustimmungen:
    0
    Hallo,
    also ich hab ein kleines Problem.
    Mein Fh-Prof möchte nicht, dass ich mein Struct global definiere und so die Daten speichere.
    Er will jedoch, dass ich es per Call by reference mache.
    Doch leider hab ich im Moment kein Plan wie ich das Anstellen soll.
    Weil ich schaff es zwar die Adresse zu übergeben, jedoch wenn ich dann per Punktoperator auf die einzelnen Werte zugreifen möchte, geht es nicht.
    Ich hoffe man kann es verstehen,

    Danke,
    Steffen Mauch

    Code:
    #include <iostream>
    using namespace std;
    
        struct help {
    		char h;
    		char e;
    		char f;
    	};
    	
    void test(help *s){
    	*s.h='1';
    	cout << s;
    }
    
    
    
    int main (int argc, char * const argv[]) {
    	struct help neu;
    	cout << &neu << endl;
    	test(&neu);
    			
        return 0;
    }
    
     
  2. below

    below MacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Code:
    (*s).h='1';
    EDIT: oder natürlich

    Code:
    s->h='1';
     
  3. steffenmauch

    steffenmauch Thread Starter MacUser Mitglied

    Mitglied seit:
    02.09.2005
    Beiträge:
    28
    Zustimmungen:
    0
    Vielen Dank,

    Nun kann ich endlich die Aufgabe fertig lösen.

    Steffen Mauch
     
  4. Ulfrinn

    Ulfrinn MacUser Mitglied

    Mitglied seit:
    30.01.2005
    Beiträge:
    6.684
    Zustimmungen:
    588
    Ich würde die Struktur in dem Fall übrigens in eine ordentliche Typendefinition packen (typedef struct { … } help_t). Ist aber nur meine persönliche Meinung. ;)
     
  5. TenFan

    TenFan MacUser Mitglied

    Mitglied seit:
    30.12.2006
    Beiträge:
    38
    Zustimmungen:
    0
    Ich würde das ganze so machen:
    Code:
    #include <iostream>
    using namespace std;
    
    struct help
    {
    	char h;
    };
    
    void test (help &s)
    {
    	s.h = '1';
    	cout << &s << endl; //in Deinem Fall wird hier auch nur die Adresse angezeigt
    }
    	
    
    int main ()
    {
    	help neu;
    	test (neu);
    	cout << neu.h;
        return 0;
    }
    
    Sowohl bei der Übergabe von Zeigern als auch von Referenzen handelt es sich um Call by reference. Die direkte Übergabe von Referenzen macht aber den Code einfacher.

    Ich will nicht unken, aber die Attribute Deiner Stuktur sind immer noch global deklariert. Nicht dass dein Prof wieder tobt :rolleyes:
     
Die Seite wird geladen...