Hallo, hab das Problem,das ich einer Funktion ein Integer-Array übergeben möchte(werte[1]).Der Rückgabewert der Funktion soll nach w[1].Aber der Compiler meldet ständig: found `unsigned int' expected `pointer to unsigned int' Hoffe mir kann geholfen werden.Danke. Mfg Christian ###################################### unsigned int avg( unsigned int a[]) { unsigned int SBase[1]; unsigned int avg_B[1]; int lfw=0; for(lfw=0; lfw <= 15; lfw++) SBase[0] = &a+SBase[0]; return SBase[0]; } void main() { unsigned int werte[1]={irgendwas}; unsigned int w[1]; w[0]=avg(werte[0]);
Ein Array übergibt man gewöhnlich nicht direkt an eine Funktion, sondern man übergibt einen Zeiger auf das erste Element (und bei Bedarf die Größe des Arrays). Es macht darüberhinaus überhaupt keinen Sinn, Arrays mit nur einem einzigen Element zu deklarieren... Und warum addierst Du zur Adresse von a in der Funktion einen anderen Wert hinzu? Das ganze scheint (nicht zuletzt wegen fehlender Kommentare) nicht viel Sinn zu machen.
Eigentlich hätte dir schon vorher klar sein können, dass "werte[0]" KEIN array ist, sondern eine Variable. Wenn die Funktion ein Array erwartet, musst du halt auch ein array übergeben, also "werte".
Unabhängig vom richtigen Kommentar von Johannes, daß Array mit nur einem Element irgendwie völlig zweckfrei sind, liegt dein Problem daran, daß du in der Funktion ein array erwartest, mit w[0]=avg(werte[0]); aber einen unsigned int übergibst. Genau das meckert der Compiler auch an. Ich würde ich mal raten, daß das hier den gewünschten Effekt hat:
1 | ######################################
|
2 | unsigned int avg( unsigned int a) |
3 | {
|
4 | ...
|
5 | SBase[0] = a+SBase[0]; |
6 | }
|
7 | |
8 | void main() |
9 | {
|
10 | ..
|
11 | w[0]=avg(werte[0]); |
12 | }
|
Der Inhalt von avg() ist damit zwar sysntaktisch richtig, Sinn macht er aber allerdings genauso wenig wie vorher. Oliver
danke für die schnelle Hilfe. mit "unsigned int avg( unsigned int a)" anstatt unsigned int avg( unsigned int a[0]) geht es. Sorry,hab den Code zwecks Übersicht soweit abgeändert das es keinen Sinn mehr zum schluß machte.
> unsigned int SBase[1]; > unsigned int avg_B[1]; Welcher tiefere Sinn verbirgt sich eigentlich hinter dem Gebrauch von Arrays mit exakt einem Element?
Dazu kommt, dass deine for Schleife überhaupt keinen Effekt hat da sie ja eh nur bis zum return kommt. Mir erschließt sich der Sinn des ganzen nicht.
Mein µC rechnet intern mit verschiedenen API befehlen und schreibt entspr. Ergebnisse in einem von ihm global definierten Array. z.b. array[0]=rückgabe_aus_API1 array[1]=rückgabe_aus_API2 ... War aber nur an array[0] interessiert und anscließend zum posten alles so ummoduliert das niemand mehr durchblickt sorry.
Flo wrote: > Dazu kommt, dass deine for Schleife überhaupt keinen Effekt hat da sie > ja eh nur bis zum return kommt. Das return steht aber gar nicht mehr in der for-Schleife, weshalb der Einwand unnötig (bzw. falsch) ist...
@Flo > Dazu kommt, dass deine for Schleife überhaupt keinen Effekt hat da sie > ja eh nur bis zum return kommt. es gibt keinen {}!
Die Funktion soll nur Mittelwert bilden. Das Array mit nur 1 Element aktualisiert sich bei jedem Programmdurchlauf neu und liefert aktuellen Wert ins 1 Element. Wobei das Array noch mehr Elemente besitzt,d,h für jedes Element wird nach Durchlauf Wert aktualisiert. ba soll aber nur 1.Element bearbeiten. unsigned int avg( unsigned int ba) { unsigned int SBase=0; unsigned int avg_B; int lfw=0; for(lfw=0; lfw <= (S_avg_Base-1); lfw++) SBase = ba+SBase; avg_B = SBase >>(int)((log10(S_avg_Base)/log10(2))); return avg_B; }
>es gibt keinen {}!
Oha, hab ich im vorbeifliegen nicht gesehen.
Also Sorry und UNDO obiger Post.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.