Hallo,
ich bin noch absoluter Anfänger in C und versuche schon seit Tagen
die Elemente bzw. Daten eines zweidimensionalen Arrays in einer
Funktion zu Verarbeiten.
Sofern sich das Array INNERHALB der Funktion befindet ist es einfach.
Die Funktion gibt die Daten des Arrays an den Seriellen Monitor aus.
Siehe erstes Programm.
Aber sobald ich die Arrays AUSSERHALB der Funktion (Global) anlege
habe ich Schwierigkeiten Auf die Daten der Zeilen und Spalten zuzu
-greifen.
Ich habe einige Beispiele im Netz gefunden die ich leider nicht
verstanden habe. Sehr unübersichtlich diese Zeiger.
Ich würde den Arrayzugriff gerne wie im zweiten Beispiel realisieren.
Kann mir einer erklären wie das geht ? Mit Beispielcode ?
So würde ich es gerne machen:
ich bin noch absoluter Anfänger in C und versuche schon seit Tagen
die Elemente bzw. Daten eines zweidimensionalen Arrays in einer
Funktion zu Verarbeiten.
Sofern sich das Array INNERHALB der Funktion befindet ist es einfach.
Die Funktion gibt die Daten des Arrays an den Seriellen Monitor aus.
Siehe erstes Programm.
Aber sobald ich die Arrays AUSSERHALB der Funktion (Global) anlege
habe ich Schwierigkeiten Auf die Daten der Zeilen und Spalten zuzu
-greifen.
Ich habe einige Beispiele im Netz gefunden die ich leider nicht
verstanden habe. Sehr unübersichtlich diese Zeiger.
Ich würde den Arrayzugriff gerne wie im zweiten Beispiel realisieren.
Kann mir einer erklären wie das geht ? Mit Beispielcode ?
C:
/*zweidimensionales Array INNERHALB einer Funktion*/
void funktion()
{
int feld[3][15] = {
{
0xB0,0xB1,0xB2,0xB3,0xB4
},
{
7,11,13,17,23
},
{
0b0001,0b0010,0b0011,0b0100,0b0101
}
};
int anzahl_im_array =sizeof(feld) / sizeof(int) / 3 / 3;
int erste_Zeile;
int zweite_Zeile;
int dritte_Zeile;
for(int zaehler = 0 ; zaehler<anzahl_im_array ; zaehler++)
{
Serial.begin(115200);
//Serial.println(anzahl_im_array);
/*Die Zahlen im Array ausgeben*/
Serial.println(" ");
Serial.println(" ");
Serial.println(feld[0][erste_Zeile],HEX);
Serial.println(feld[1][zweite_Zeile]);
Serial.println(feld[2][dritte_Zeile],BIN);
erste_Zeile++;
zweite_Zeile++;
dritte_Zeile++;
}
}
void setup()
{
funktion();
}
Serieller Monitor:
C!(j
7
1
!j
B1
11
10
B2
13
11
B3
17
100
B4
23
101
So würde ich es gerne machen:
C:
/*Array AUßERHALB einer Funktion*/
/*zweidimensionales Array an eine Funktion übergeben*/
int array_eins[3][21] = {
{
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6
},
{
4,6,8,10,12,14,16
},
{
0b100000,0b100001,0b100010,0b100011,0b100100,
0b1000101,0b100110
}
};
int array_zwei[3][15] = {
{
0xB0,0xB1,0xB2,0xB3,0xB4
},
{
7,11,13,17,23
},
{
0b0001,0b0010,0b0011,0b0100,0b0101
}
};
void funktion(int feld)
{
int anzahl_im_array =sizeof(feld) / sizeof(int) / 3 / 3;
int erste_Zeile;
int zweite_Zeile;
int dritte_Zeile;
for(int zaehler = 0 ; zaehler<anzahl_im_array ; zaehler++)
{
Serial.begin(115200);
/*Die Zahlen im Array ausgeben*/
Serial.println(" ");
Serial.println(" ");
Serial.println(feld[0][erste_Zeile],HEX);
Serial.println(feld[1][zweite_Zeile]);
Serial.println(feld[2][dritte_Zeile],BIN);
erste_Zeile++;
zweite_Zeile++;
dritte_Zeile++;
}
}
void setup()
{
funktion(array_eins);
}