zweidimensionales Array

Hallo, ich versuche im Moment ein zweidimensionales Array zu deklarieren und mit int Werten zu füllen, was leider nicht funktioniert.

#define az 8 //Anzahl der Heizkreise
#define sz 2 //Anzahl der Schaltzeiten je Heitzkreis

//int zeiten[az][sz];//Einschaltzeit, Ausschaltzeit
int zeiten[0][sz]={930,2130}; 
int zeiten[1][sz]={800,2200};

void setup()
{
  Serial.begin (9600);
}

void loop()
{
  Serial.println(zeiten[0][0]);
  Serial.println(zeiten[0][1]);
  
}

es kommt folgende Fehlermeldung:

sketch_jan31a:7: error: too many initializers for 'int [0][2]'

leider kann ich mit der Fehlermeldung nichts anfangen. Vielleicht kann mir jemand auf die Sprünge helfen. Vielen Dank Ardubu

int zeiten[az][sz] = { {930,2130}, {800,2200} };

Hallo Serenifly, vielen Dank, es funktioniert. Zusatzfrage: kann man hinterher noch Zeilenweise die Werte in´s Array schreiben?

Nicht direkt. Es geht mit einem Umweg über memcpy: http://www.cplusplus.com/reference/cstring/memcpy/

Also, ein Array in ein anderes kopieren:

int zeiten[az][sz] = { {930,2130}, {800,2200}, { 500, 500 } };
int buf[] = { 100, 100 };
memcpy(zeiten[1], buf, sz * sizeof(int));

Danach steht 100, 100 im mittleren Teil-Array

Pass dabei aber tunlichst auf, dass du verstehst was da abläuft! memcpy kopiert Byte-weise. Der dritte Parameter ist die Anzahl der Bytes die kopiert werden sollen. Ein int hat zwei Bytes. Also hier 2 * 2 = 4. Der erste Parameter ist die Ziel-Adresse. Für diesen kann man den ersten Index des Arrays verwenden.

Es findet hier keinerlei Überprüfung statt ob der Speicher korrekt adressiert ist! Du kannst dir da also leicht irgendwelchen anderen Speicher überschreiben.