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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.