c++ Struct einer Funktion als Zeiger übergeben

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

  1. steffenmauch

    steffenmauch Thread Starter MacUser Mitglied

    Beiträge:
    28
    Zustimmungen:
    0
    Mitglied 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.276
    Zustimmungen:
    1.086
    Mitglied 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
    Mitglied 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.678
    Zustimmungen:
    587
    Mitglied 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 MacUser Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    Mitglied 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