X
Ok, hab eine Lösung gefunden unter dem Motto "Wieso einfach, wenns kompliziert geht" ;):
Deklaration:
bool TestMagicQuad(int* quad,int size)
So und wenn man jetzt seinen Kopf lange genug gegen die Wand haut,fällt einem vielleicht wieder ein, wie 2D-Arrays im Speicher abgelegt sind:
4x4 Array:
|1/2/3/4|5/6/7/8|9/10/11/12|13/14/15/16|
ja, alle in einer Reihe. Das heißt, 16 befindet sich um +15sizeof(int) Bytes nach 1.
Also kann ich aus dem Zweidemensionalen Array tatsächlich ein eindemensionales machen:
quad[2][2] wird in meiner Funktion zu 1D_quad[2size+2]
Muss man auch erst mal draufkommen...
Damit ist auch erklärt, warum der Compiler int[][] nicht in int** umwandeln kann:
bei int[][] ist int[3] gleich der Adresse von 4
bei int** wäre int[3] gleich der Adresse vom Zeiger auf ein int[4] dessen erstes Element 13 ist
So schön können Zeiger sein
PS: geht natürlich mit quad[4][4]=...
Trotzdem Danke