Emmanuel Delahaye C is a sharp tool | Sve@r a écrit :
Est-ce vraiment important de se forcer à travailler en 1 dim si le C nous offre la possibilité de travailler en 2 dim ? On sait très bien qu'au bout du compte il n'y a qu'une dim finale mais puisque c'est le compilo qui fait la translation pour nous...?
|
La taille étant fixe, on peut très bien définir un tableau à 2 dimensions en 1 seul malloc() (ou calloc). Il suffit d'utiliser le bon type... (tableau de tableau...)
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef int T[10];
- void print (T * p, size_t n)
- {
- size_t i;
- for (i = 0; i < n; i++)
- {
- size_t j;
- for (j = 0; j < n; j++)
- {
- printf ("%3d", p[i][j]);
- }
- printf ("\n" );
- }
- printf ("\n" );
- }
- int main (void)
- {
- T *p = NULL;
- size_t n = sizeof *p / sizeof **p;
- p = calloc (sizeof *p, n);
- if (p != NULL)
- {
- print (p, n);
- memset (p, -1, sizeof *p * n);
- print (p, n);
- }
- return 0;
- }
|
Je ne suis pas sûr que ce code soit portable, mais ça donne l'idée...
Message édité par Emmanuel Delahaye le 03-02-2007 à 14:53:02 ---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
|