zeiger auf strukturen in unterprogrammen
-
hallo!
ich habe in eineer headerdatei eine struktur definiert:
struct test{ char vornamen[10]; char nachname[10]; };im hauptprogramm habe ich eine unterfunktion:
void show(test*[]);(diese schnittstelle steht fest. die kann ich nicht verändern)
also hab ich im hauptprogramm stehen:test *bla[10]; show (*bla[]);und mein unterprogramm sieht dann in etwa so aus:
void show(test*tra[]) { //und wie greif ich jetzt auf die struktur zu? //tra[1].vornamen funktioniert nicht... }wäre super wenn mir jemand einen tipp geben kann. strukturen, pointer und funktionen sind mir eingentlich schon klar, aber jetzt alles kombiniert...
-
Ich weiß garnet wofür du jetzt einen tipp wilst? Funktioniert das nicht oder was ist dein problem? Oder habe ich das übersehen dann tut es mir leid.
-
Erstens solltest du die Funktion aufrufen per "show(bla);", zweitens solltest du die Elemente deines Arrays irgendwo vor dem Aufruf initialisieren, und drittens: versuch's mal mit "tra[i]->vornamen;" bei der Verwendung.
-
danke, cstoll! super tipps. jetzt kann ich mein programm ohne fehler übersetzen. aber wenn ich es ausführe kommt "projekt.exe hat ein Problem festgestellt und muss beendet werden."
wäre super wenn mir nochmal jemand helfen könnte!gesamter code:
// #include <iostream> using namespace std; struct test{ char vornamen[10]; char nachname[10]; }; void show(test*[]); int main() { test *bla[10] = {0}; show(bla); return 0; } void show(test*tra[]) { cout << tra[0]->nachname << endl; }
-
könnte denn wenigstens jemand versuchen den code den ich vorhin gepostet habe auszuführen und schauen obs bei euch funktioniert.
das nervige ist ja, das kein übersetzungsfehler kommt, sondern ein fehler beim ausführen...bittebitte

-
sgl schrieb:
das nervige ist ja, das kein übersetzungsfehler kommt, sondern ein fehler beim ausführen...
Wundert dich das, wenn du versuchst, über Nullzeiger auf nicht existierende Objekte zuzugreifen? Du hast in deinem Programm kein einziges test-Objekt, nur zehn Zeiger.
Grundlagentutorial?
-
Und das habe ich auch oben schon erwähnt:
CStoll schrieb:
zweitens solltest du die Elemente deines Arrays irgendwo vor dem Aufruf initialisieren
das bedeutet in deinem Fall:
for(int i=0;i<10;++i) test[i]=new test;(eventuell sollte "test" auch einen Konstruktor verpasst bekommen, der 'vornamen' und 'nachname' mit Werten Füllt)