c++ Struct einer Funktion als Zeiger übergeben

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von steffenmauch, 05.01.2007.

  1. steffenmauch

    steffenmauch Thread Starter MacUser Mitglied

    Beiträge:
    28
    Zustimmungen:
    0
    MacUser seit:
    02.09.2005
    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

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

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

    steffenmauch Thread Starter MacUser Mitglied

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

    Nun kann ich endlich die Aufgabe fertig lösen.

    Steffen Mauch
     
  4. Ulfrinn

    Ulfrinn MacUser Mitglied

    Beiträge:
    6.676
    Zustimmungen:
    586
    MacUser seit:
    30.01.2005
    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 Banned

    Beiträge:
    38
    Zustimmungen:
    0
    MacUser seit:
    30.12.2006
    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...

Diese Seite empfehlen