Array in funktion füllen

hallo!

ich pointer-guru brauch mal eure hilfe; vermutlich total simpel, aber ich blicks nicht!
folgendes:
ich hab eine klasse, die übergibt an eine funktion ein array und dieses soll mit werten gefüllt zurück gegeben werden; call bei … reference glaub ich… wie gesagt: pointer-guru.
das ganze sieht jetzt beispielhaft etwa so aus:

array:
double werte[6];

funktion (wie ich es gerade versuche):
int fuellen(double \*werte)
{
werte[0]=1;
werte[1]=2;
werte[2]=3;
werte[3]=4;
werte[4]=5;
werte[5]=6;

return 0;
}

aufruf:
fuellen(werte);

    
    wenn ich vor dem "return 0" mir per TRACE die werte ausgeben lasse, dann bekomme ich, wie es sein soll, 1-6; allerdings werden die irgendwie nicht in das array übertragen... in anbetracht dessen, dass ich im prinzip eine andere funktion kopiert habe, die die wwerteübergabe exakt so macht, wundere ich mich nun, dass dies nicht tut...
    
    ideen? was ist mein fehler?
    
    btw: der aufbau und art der parameterübergabe und der fuellen-funktion ist NICHT umstellbar, sondern muss aus programmiertechnischen gründen so beibehalten werden! also nichts mit "int fuellen (double &werte)" und solche späße!
    
    grüße
    Geisterkarle

Hallo,

dein btw ist die Erklärung: wenn du einen Parameter einer Funktion verändern willst, musst du einen Pointer darauf übergeben, anders geht das technisch garnicht, auch in keiner anderen Programmiersprache. Deine Versuche sind also zum Scheitern veruteilt, bis die Voraussetzung geändert wird.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo!

ich hab eine klasse, die übergibt an eine funktion ein array
und dieses soll mit werten gefüllt zurück gegeben werden; call
bei … reference glaub ich… wie gesagt: pointer-guru.
das ganze sieht jetzt beispielhaft etwa so aus:
double werte[6];
int fuellen(double *werte)
{
werte[0]=1;
werte[1]=2;
werte[2]=3;
werte[3]=4;
werte[4]=5;
werte[5]=6;

return 0;
}
fuellen(werte);

So wie es da steht *werden* die Zahlen in das
Array, addressiert durch *werte, übertragen
(mit Sicherheit).

ideen? was ist mein fehler?

Keine Ahnung. Der liegt mit Sicherheit woanders.
Vielleicht übergibst Du im realen Code gar nicht
das richtige Feld? Der formale Parameter werte
in

 int fuellen(double \*<u>werte</u>) 

hat nichts,
aber auch gar nichts mit einem eventuell vorhandenen
globalen Feld ‚werte‘ zu tun. Deshalb nennt man auch
niemals seine formalen Parameter so wie tatsächliche
Daten.

Grüße

CMБ

hallo!

void main()
{
 double dieWerte[6];
 dieWerte[0]=0.00;
 dieWerte[1]=0.00;
 dieWerte[2]=0.00;
 dieWerte[3]=0.00;
 dieWerte[4]=0.00;
 dieWerte[5]=0.00;
 int was=0;
 was=fuellen(&dieWerte[0]);
} 
 return TRUE;
}
int fuellen(double \*werte)
{
werte[0]=1;
werte[1]=2;
werte[2]=3;
werte[3]=4;
werte[4]=5;
werte[5]=6;

return 0;
}

also mit

fuellen(&dieWerte[0]);

gehts :smile:

danke alle!
sers!

hat sich erledigt!
hab mich im prinzip nur selber verarscht… :confused:

danke trotzdem an alle! :smile:

grüßle