c++ Struct einer Funktion als Zeiger übergeben

S

steffenmauch

Mitglied
Thread Starter
Dabei seit
02.09.2005
Beiträge
29
Reaktionspunkte
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;
}
 
Code:
(*s).h='1';

EDIT: oder natürlich

Code:
s->h='1';
 
Vielen Dank,

Nun kann ich endlich die Aufgabe fertig lösen.

Steffen Mauch
 
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. ;)
 
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:
 
Zurück
Oben Unten