Eh bien, si tu veux que cnx soit un tableau à deux dimensions, il faut le déclarer comme tel:
Si tu veux avoir nb_cnx lignes dans ton tableau, il faut que tu fasses:
cnx = malloc(nb_cnx * sizeof(int*)); //sizeof(int*) = 4
Et ensuite, si tu veux que chaque ligne fasse 1023 cases (et donc que ton tableau fasse 1023 colonnes), il faut allouer la mémoire correspondant à chaque ligne avec une boucle:
1 2 3 4
| for (i = 0; i < nb_cnx; i++)
{
cnx[i] = malloc(1023 * sizeof(int)); //sizeof(int) = 4 aussi
} |
sizeof(int) et sizeof(int*) correspondent ici aux éléments que tu mets dans ta variable. Donc si tu faisais un tableau à deux dimensions rempli de caractères, tu ferais sizeof(char*) puis sizeof(char). Dans le premier cas, tu déclares en fait que cnx est un tableau de pointeurs, chacun des pointeurs pointant à son tour sur un tableau d'entiers. Ensuite, tu dis que chacun de ces tableaux d'entiers doit avoir de la place pour mettre 1023 entiers =)
J'crois bien que c'est comme ça qu'il faut faire.
Partager