mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik arrays ubergeben


Autor: joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: joko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es gibt keine fehlermeldung

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn Du feld[i] verwendest sollte die Schleifenvariable auch i heissen.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder du nimmst feld[b]

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lo, ich bin glatt vom Stuhl gekippt :D

Autor: Karl heinz Buchegger (kbucheg)
Datum:

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

Autor: Winfried Speidel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.