arrays ubergeben

Gast #336858
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
Gast #336861
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.
Gast #336865
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
#336866
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren