Tableaux a 2 dimensions

Résolu
AsM0DeUz Messages postés 19 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 4 février 2009 - 31 janv. 2007 à 16:37
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 31 janv. 2007 à 16:56
'lut !

Je tente de comprendre les tableaux a 2 dimensions en me servant d'un tableau de pointeurs. Seulement lorsque je me documente sur le net, je tente trouve ca :

   int ** a = malloc(nrows * sizeof *a );
    for(i = 0; i < nrows; i++)
       a[i] = malloc(ncolumns * sizeof *(a[i]));




   float **float_values = (float**)malloc(4 *sizeof(float*));
    for(int i=0; i<4; i++)
        *(float_values+i) = (float*)malloc(3 *sizeof(float));





laquelle des 2 solutions vous semble la meilleure ?

Pourquoi y a t'il un (float**) dans cette ligne :

   float **float_values = (float**)malloc(4 *sizeof(float*));

Est ce que ca fait la meme chose :

   float **float_values = malloc(4 *sizeof(float*));

Merci

1 réponse

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
31 janv. 2007 à 16:56
Les deux sont semblables. La première alloue de la mémoire pour des int et la seconde pour des float.
Le float** devant le malloc est un cast. Ça sers, en gros, à dire au compilateur d'interpréter la valeur retourné par malloc comme étant un float**.

Je vien juste de publier un snippets. C'est un allocateur pour pointeur de pointeurs. C'est très simple d'utilisation et bien plus performant qu'allouer séparément la mémoire pour chaque pointeur:
http://www.codyx.org/snippet_allocateur-pointeur-pointeurs_293.aspx

C++ (@++)<!--
3
Rejoignez-nous