Forum: Mikrocontroller und Digitale Elektronik arrays ubergeben


von joko (Gast)


Lesenswert?

hi
ich muss ein array feld[i]
an einen char typen übergeben
so in etwa
test = feld[i];
beides ist in char deklariert
aber es geht nicht

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

"es geht nicht".

Wirklich erstaunlich, wieviele Leute es immer wieder versuchen, mit so
extrem präzisen Fehlerbeschreibungen Hilfe zu bekommen.

Also:

- Gibt der Compiler eine Fehlermeldung aus? (wenn ja: Welche?)
- Was genau passiert?
- Quelltext?

von joko (Gast)


Lesenswert?

for(b = 0; b < 8; b++)
{
ersatz = feld[i];
if(ersatz & 0x01)
P3_2 = 0;
else
P3_2 = 1;
ersatz =  ersatz >> 1;
}
so siehts aus ein feld wird an einem port übergeben
geht aber nur wenn das feld zb feld[0] heisst
verwende ich feld[i] und deklariere i mit 0 vor geht es net
leider kann mann ein feld[i] auch net shiften
bei feld[0] gehts aber komischerweise wieder
verwendeter comp keil

von joko (Gast)


Lesenswert?

es gibt keine fehlermeldung

von Ingo (Gast)


Lesenswert?

wenn Du feld[i] verwendest sollte die Schleifenvariable auch i heissen.

von Rolf Magnus (Gast)


Lesenswert?

Wieder so eine tolle Fehlerbeschreibung. "geht es net" und "es gibt
keine fehlermeldung". Was passiert denn stattdessen? Zeig mal, wie
ersatz und feld definiert sind. Einfach alles, was von deinem Code  für
den Fehler relevant sein könnte, und nicht nur Fragmente. Wenn du Hilfe
erwartest, solltest du mit dem potenziellen Helfer keine Ratespielchen
veranstalten.

von Simon K. (simon) Benutzerseite


Lesenswert?

oder du nimmst feld[b]

von Lupin (Gast)


Lesenswert?

lo, ich bin glatt vom Stuhl gekippt :D

von Karl heinz B. (kbucheg)


Lesenswert?

Und vor allen Dingen:
Was bedeutet: 'es geht net'?
Steigen Rauchwölkchen auf? schaltet sich das Licht ein?
Stürzt der Rechner ab?

von Winfried Speidel (Gast)


Lesenswert?

noch eine kleine Anmerkung

- in C ist es nicht moeglich ein array zu uebergeben, es kann lediglich
ein zeiger (adresse) auf das erste arrayelement uebergeben werden, oder
aber ein feldelement

Bsp:

int feld[5]; // definiert ein feld, eintraege zufaellig
int *p;      // definiert einen (int) zeiger
int wert;    // definiert eine int variable

p = feld;    // p wird mit der adresse des ersten feld elementes
             // geladen (adressuebergabe, keine felduebergabe)
             // identisch ist folgende anweisung p = &feld[0];

wert = feld[2] // ein eintrag des feldes (3. Element) -> wert

von Karl heinz B. (kbucheg)


Lesenswert?

noch eine kleine Anmerkung:
Wenn man unbedint ein Feld übergeben möchte, dann packt
man dieses in einen struct ein. structs werden 'per
value' übergeben.

eine 2.-te Anmerkung:
> es kann lediglich ein zeiger (adresse) auf das erste arrayelement
> uebergeben werden

Genau das ist die größte Konfusion bei Neulingen.
In so einem Fall degeneriert ein Array automatisch zu einem
Pointer auf das erste Array-Element. Man kann auch sagen: Der
Name des Arrays, also ohne irgendeinen Index, steht für einen Pointer
auf das erste Array Element. Das bedeutet aber nicht, dass der
Array-Name alleine ein Pointer ist! Ein Pointer ist ein Pointer
und ein Array ist ein Array. Nur in ganz bestimmten Fällen wird
diese Typ-Umwandlung vom Compiler gemacht!

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
Noch kein Account? Hier anmelden.