Strukturen, malloc und Paramenterübergaben
-
Hallo,
ich bin nicht wirklich der C++ profi, möchte jedoch folgendes machen...
Ich will mir eine Struktur anlegen, dann Speicher über malloc sichern für mehrere Strukturen und in einer anderen Methode möchte ich "krasse" Sachen mit der Sammlung von dieser Struktur machen.
Hier mein Vorgehen (grob,jedoch alles ausschlaggebende dabei)://prototype void initBsp(int n, bsp *b); struct bsp{ int eins; int zwei; int drei; } int main(...parameter...){ int n=3; //hier mache ich mir den speicher für 3 bsp frei struct bsp *b=(struct bsp *) malloc(n*sizeof(struct bsp)); initBsp(n, bsp); } void initBsp(int n, bsp *b){ for(int i=0;i<n;i++){ struct bsp bsp; bsp.eins=1; bsp.zwei=2; bsp.drei=3; b[i]=bsp; } }
Im prinzip geht es direkt um diese zeile
b[i]=bsp;
, wieso es es nicht möglich? ich kriege direkt an dieser stelle einen fehler und ich weiß nicht woran es liegt. Mein code sieht natürlich etwas größer aus, aber an dieser stelle meckert er. Er ist natürlich auch angepasst. Was ich oben beschrieben habe ist nur meine vorgehensweiße. Kann mir jemand helfen dieses Problem zu lösen? ich möchte einfach den gesicherten Speicher aus der main mit den werten bzw. der inizialisierten strukturen aus der initBsp(...) füllen und in der main-methode damit weiter rechnen und komische sachen damit machen. Ich komme aus der java szene und weiß daher nicht wirklich was möglich ist, vllt habe ich auch etwas übersehen bzw. bin noch java eingestellt.
-
Gekürzt schön und gut, aber da stimmt so einiges nicht.
- bsp ist zur Deklaration von initBsp noch gar nicht bekannt
- Die struct Definition muss mit ; enden
- Der Aufruf von initBsp bekommt als zweiten Parameter nicht den Array, sondern den Struktur-Typ
Nach Korrektur dieser Fehler und dem Einfügen der richtigen Parameter für main läuft bei mir alles.
Deine erwähnte Zeile kopiert den Inhalt der temporären Struktur bsp und ist so richtig.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89, C99 und C11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
sfgheady schrieb:
ich bin nicht wirklich der C++ profi
Nein, wirklich nicht, denn das ist reines C, bis auf ein paar Sachen die man in C so eher nicht machen würden, die so aussehen, als hätte man fälschlicherweise einen C++-Compiler für den Code benutzt.