Array und dessen Index

OP #3219066
Lesenswert?
• ▲
▼
Moin,
Irgendwas muss ich übersehen haben
Ich habe ein Array:
1
volatile unsigned char PVWChannel[16]={ 1,2,3,4,5,6,7,133,9,10,11,12,13,14,15,16};

Auf dieses wird mittels des Index
1
unsigned char key;
zugegriffen.
"key" werden Werte zwischen 0 und 16 zugewiesen, wobei die 0 
herausgefiltert wird (Rückgabewert einer Matrix-Tastaturabfrage: "0" = 
keine Taste gedrückt).
Auf das Array greife ich nun so zu:
1
xyz = PVWChannel[key-1];

Es sollte also bei key = 1 xyz=1 sein oder bei key = 8 xyz = 133.
Ist es aber nicht.
Bei key = 1 ist xyz = 0 und bei key = 8 ist xyz = 132.
Das zieht sich über das ganze Array hin.

Woran liegt es?
Die Optimieroption des Compilers ist "0".

Vielen Dank und viele Grüße
Rahul
OP #3219090
Lesenswert?
• ▲
▼
array schrieb:
> key-1 bei key =0 --> key=255
>
> Zugriff auf Elemente ausserhalb des Arrays

Wer lesen kann, ist klar im Vorteil. (Passiert mir aber auch ganz 
gerne).
Die 0 wird vor dem Array-Zugrff rausgefiltert.

Daniel V. schrieb:
> Da du schon deutlich über 1000 Beiträge geschrieben hast, weisst du
> sicher, dass jetzt gleich die kaputten Glaskugeln kommen...

Welche Paramewter fehlen noch?
OP #3219128
Lesenswert?
• ▲
▼
Yalu X. schrieb:
> Rahul Der trollige schrieb:
>> Bei key = 1 ist xyz = 0 und bei key = 8 ist xyz = 132.
>
> Dann hast du wahrscheinlich statt
> xyz = PVWChannel[key-1];
>
> dieses
> xyz = PVWChannel[key-1]-1;
>
> geschrieben.

nee. Dachte ich auch schon.

be stucki schrieb:
> Verhält sich das Programm korrekt, wenn du
> z.B.xyz=PVWChannel[0];schreibst?

in dem Fall sollte xyz = 1 sein. Ist aber 0.
Gast #3228875
Lesenswert?
• ▲
▼
Justus Skorps schrieb:
> array schrieb:
>> 0-16 --> 17 Elemente
>> key-1 bei key =0 --> key=255
>>
>> Zugriff auf Elemente ausserhalb des Arrays
>
> er sagt ja, dass die 0 rausgefiltert wird...allerdings fände ich es auch
> intuitiver, das Array trotzdem mit 17 Elementen zu erstellen, an der
> 0ten Stelle eben nur ein Dummywert...

"intuitiver", ich hör wohl nicht richtig?
Wohl eher verschwenderisch.
Mit wachsender Erfahrung dürfte es kein Problem sein, sich an einen 
Index von 0 bis (Anzahl der Element - 1) zu gewöhnen.

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.