Tu as deux possibilités pour une matrice de taille de ligne (colonne on s'en fout) variable :
1) tu alloues un tableau de XxY cases et tu y accèdes en faisant toi même le calcul
2) tu alloues X tableaux de Y cases, plus un tableau contenant X pointeurs vers ces X tableaux.
La solution 1) est plus compacte et plus propre, mais un peu plus chiante à écrire. Ca donne qqc comme ça
typedef float * matrix;
#define INDEX(l, c, h, w) ((l)*(w)+(c))
matrix i_want_a_matrix_please(int h, int w) {
int l, c;
matrix result;
result = (matrix)malloc(h * w * sizeof(int));
for (l = 0; l < h, ++l)
for (c = 0; c < w; ++c)
result[INDEX(l, c, h, w)] = 0.0f;
return resultat;
}
w => width (largeur)
h => height (hauteur)
l => line
c => column
Note que c'est volontairement très lent, histoire de montrer comment accéder aux cases (un memset aurait fait le boulot très bien pour mettre la matrice à 0).