Ferner ist die Funktion so angelegt, dass sie selbst "weiß", dass es sich beim übergebenen int-Zeiger um einen Zeiger auf das erste von 16 int-Elementen handelt, die logisch als 4 Gruppen zu je 4 Elementen gesehen werden sollen.
ist das schlecht?Nein, es ist eine gängige Vorgehensweise, weil bei der Übergabe von Arrays als Funktionsparameter in C nur ein Zeiger auf das Array übergeben wird und jegliche Information über die Struktur verlorengeht.
Also in C++ würde man je nachdem welche Größen fest bzw. dynamisch sind folgendes schreiben
* wenn alles statisch fest auf 4 sein muß
void printField(int field[4][4])
{
...
}
* wenn daß äußere Feld dynamisch ist
void printField(int (*field)[4], unsigned long size)
{
...
}
* wenn alles dynamisch ist
void printField(int** field, unsigned long size1, unsigned long size2)
{
...
}
das sollte eigentlich auch in C gehen?