Serenifly:
Das hat nichts der Version zu tun. Der Code ist einfach nicht korrektes C/C++. Egal auf welcher Plattform. Du hast ein zwei-dimensionales Array. Wenn du dann nur array[index] machst, zerfällt das hier zu einem Zeiger auf int, da Array-Variablen Zeiger auf das erste Element sind. Damit kann print() natürlich nichts anfangen. Sowas
Das mit den Zeigern kann ich nicht nachvollziehen.
Dass arrays Zeiger sind, geht noch, aber warum zerfällt das auf einen Zeiger auf int?
BTW: Mit Zeigern bin ich noch nie warm geworden 
Ich meine zwar das Prinzip grundsätzlich verstanden zu haben, aber ich habe das nie umgesetzt bekommen.
kann man bei C Strings (d.h. Arrays aus char) machen, aber hier musst du schon beide Dimensionen angeben. Sowie du es auch beim Schreibenden Zugriff machst
Ist es denn normal, dass der Compiler einfach hängen bleibt und gar keine Ausgabe mehr macht? Bei größeren Quelltexten hätte man kaum eine Chance den Fehler zu finden.
Da der Compiler unter IDE1.0.5 eine Fehlermeldung ausgegeben hat, bin ich davon ausgegangen, dass der Compiler unter 1.6.4 ne Macke hat oder schlechter oder weniger anfängerfreundlich ist.
Wenn du alle Elemente eines Teil-Arrays ausgeben willst kannst dir dafür eine Funktion schreiben:
[..]
Dann werden alle Werte einer Zeile ausgeben.
Das sieht sehr elegant aus und nimmt etwas vorweg, was ich noch ausprobieren wollte.
Was da abgeht, leuchtet mir allerdings nicht ein.
Ich habe mir daraus mal eine lauffähiges Programm erstellt, um damit etwas spielen zu können.
int j,k;
int Sensorwerte[4][3]; //4 Sensoren mit je 3 Werten
void setup() {
Serial.begin(9600);
}
void loop() {
delay(1000);
for (int j=0; j<4; j++){
for (int k=0; k<3; k++){
Sensorwerte[j][k]= (k*j); // Sensorwerte speichern
};
printArrayDimension(Sensorwerte[j], 3);
} ;
Serial.println("..........");
}
void printArrayDimension(int *array, int elements)
{
for(int i = 0; i < elements; i++)
{
Serial.print(array[i]);
Serial.print(" ");
}
Serial.println();
}
Ich habe mir überlegt, wie die Funktion aussehen müsste, wenn von jedem Sensor der erste Wert ausgegeben werden sollte.
Oder geht das prinzipiell nicht so elegant, weil die Werte im Speicher seriell abgelegt sind?
Ich nehme an, dass die Reihenfolge der Werte wie folgt ist:
Sensorwerte[0][0], Sensorwerte[0][1], Sensorwerte[0][2], Sensorwerte[1][0], Sensorwerte[1][1], ...
So ähnlich stelle ich mir das vor, aber es klappt nicht:
void printArray_nWert(int *array, int nWert)
{
for(int i = 0; i < 4; i++)
{
Serial.print(array[i][nWert]);
Serial.print(" ");
}
Serial.println();
}
Außerdem ist der Index falsch. Ein Array mit 4 Elementen geht von 0-3. Index 4 existiert nicht. Also < 4 statt < 5 machen!
Ja, ist klar. Das wusste ich vorher schon, hatte es gestern kurz zuvor noch gelesen, und habe es dann doch falsch eingehackt. Da habe ich den Überblick verloren.
Besser ist es die Dimensionen als Konstanten anzulegen, statt sie fest in jede Schleife zu schreiben. Dann muss man sie nur an einer Stelle ändern und der Code skaliert damit.
Ja, ist auch klar. Das waren nur meine ersten Gehversuche und da sind die Zahlen einfacher, als wenn ich Konstanten einsetze.