Ich habe folgenden Code:
struct student{
unsigned long mnr;
int scores[NUM_TASKS];
struct student* buddy;
};
struct student a;
int array[NUM_TASKS]={1,2,3,4};
a.scores=array;
In der oben mit
Ich habe folgenden Code:
struct student{
unsigned long mnr;
int scores[NUM_TASKS];
struct student* buddy;
};
struct student a;
int array[NUM_TASKS]={1,2,3,4};
a.scores=array;
In der oben mit
hab leider grad nix zur hand zum testen aber habe was in erinnerung, dass c nicht automatisch einen kopiervorgang startet. wenn du eine kopie von „array“ in scores haben möchtest, musste dir ne kleine schleife basteln und manuell kopieren. andernfalls musste nen pointer drauf legen, um darauf zugreifen zu können.
p.s. …ich wusste gar nicht das ich hier angemeldet bin und ich bin alles andere als ein c-gott…bei java z.B. könnt ich dir eher helfen.
viel glück bei der lösung deines problems!
Danke jetzt gehts. Schleife war das Zauberwort.
Komme auch aus der Java Ecke. Da gibts solche Probleme
nicht
hab leider grad nix zur hand zum testen aber habe was
in
erinnerung, dass c nicht automatisch einen
kopiervorgang
startet. wenn du eine kopie von „array“ in scores haben
möchtest, musste dir ne kleine schleife basteln und
manuell
kopieren. andernfalls musste nen pointer drauf legen,
um
darauf zugreifen zu können.
p.s. …ich wusste gar nicht das ich hier angemeldet
bin und
ich bin alles andere als ein c-gott…bei java z.B.
könnt ich
dir eher helfen.
viel glück bei der lösung deines problems!
Das Problem liegt daran, dass scores selber ein Array ist. Ein fix angelegtes Array hat einen konstanten Pointer der immer auf die gleiche Speicheradresse zeigt und den du nicht verändern darfst.
Mit deiner Zuweisung würdest du aber den „scores“ - Pointer auf die Speicheradresse des „array“ Pointers zeigen lassen, deswegen kommt der Fehler.
Hallo,
ein Array wird auf dem Stack abgelegt. Dort wird fest ein Speicherbereich für das Array a.scores reserviert. Dies verhält sich wie eine Konstante. Nur die Werte im Array selbst können mittels a.scores[0]=array[0]; usw. verändert werden. Ich würde eine Schleife bauen, die durch alle Elemente im array durchiteriert und jedes einzelne Element dem entsprechenden a.scores-Element zuordnet.
Nicht vergessen vorher prüfen, ob a.scores wirklich identisch groß ist wie array.
Viele Grüße
Steffen
Arrays lassen sich nicht so einfach ohne weiteres kopieren (Ein Array ist in C keine wirklicher Datentyp, sondern der Name entspricht der Pointer auf das erste Element). Am besten du befüllst dein Array über eine for-Schleife:
int i;
for(i=0;i
sorry, da bin ich die völlig falsche Adresse. Warum mich WWW da ausgesucht hat, ist mir ein Rätsel.
Grüße, h. falk