Quelques rapels sur l´analogie pointeurs/tableaux en C et C++ :
Le nom d´un tableau seul est un pointeur constant vers le premier élément du tableau. Exemple, si :
int variable[10];
Les notations suivantes sont parfaitement équivalentes :
"variable" et "&variable[0]"
"*variable" et "variable[0]"
"variable+2" et "variable[2]"
"*(variable+2)" et "variable[2]"
(faut connaitre les notions d´arithmétique des pointeurs)
En outre, ce n´est pas parce que ton tableau fait 2 dimensions qu´il te faut un pointeur double : ca reste un pointeur simple.
Ainsi :
int mat[128][128];
void f(int *m)
{
//...
}
Sachant que, pour obtenir l´élément : m[y][x], il faut faire :
Bon mais c´est pas forcément très clair à la relecture du code : la notation matricielle est préférable.
De toutes facons quelque soit la notation que tu emploies, tu est obligé de connaitre la largeur de ton tableau pour accéder aux éléments d´une matrice à 2 dimensions : donc void f(int mat[][128]); est bien (tu peux omettre le premier indice, ce qui prouve une fois encore la profonde analogie pointeurs/tableaux)
Bonus puis qu´on parle des tableaux, saviez vous que l´on peut tout aussibien écrire :
tableau[indice] que indice[tableau] en ANSI C (je sais pas pour le C++...) ?
Légitime un fois encore puisque indice et tableau sont castés en pointeurs cers le type de tableau, additionnés et l´addresse obtenue est déréférencée.
On peut ainsi obtenir des trucs marrants :
y[x[tableau]] Beuarg =D