Passer un tableau 2D en paramètre en C

poiuytrez3
Messages postés
150
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
17 mars 2009
- 16 déc. 2005 à 13:05
poiuytrez3
Messages postés
150
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
17 mars 2009
- 17 déc. 2005 à 20:19
Bonjour,

je souhaiterai passer en paramètre un tableau 2D, mais j'ai une erreur de compilation, voici mon code:

#include <stdio.h>

#include <stdlib.h>



void remplissage (int** tableau, int aLignes, int aColonnes)

{

int i;

int j;

for(i = 0; i < aLignes; i++)

for(j = 0; j < aColonnes; j++)

tableau[i][j] = 0;

}



int main()

{

const int lignes = 10;

const int colonnes = 20;

int tab[10][20];



// Rempli le tableau

remplissage(tab, lignes, colonnes);



system("PAUSE");



return 0;

}







Merci de votre aide!

10 réponses

ctx_man
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013
2
17 déc. 2005 à 12:39
Perso je prefer les while, les for ne sont pas asser flexibles et on tendance à apporter des problème si tu ne sais pas exactement quand on doit verifier la condition de boucle. Si tu ecrit *((int *)tableau+i+j) = 3; tu dis que tableau[i+j] = 3 ! Par conséquent tu dépasse largement ton nombre de ligne et tu fais pointer tes ignes sur l'adresse mémoire 0x00000003 !!!

void remplissage (int** tableau, int aLignes, int aColonnes)
{
int i;
int j;
i = 0;
while(i < aLignes)
{
j = 0;
while(j < aColonnes)
{
//Formalisme tableau
tableau[i][j] = 0;
//Formalisme pointeur
*(*(tableau + i) + j) = 0;
j++;
}
i++;
}
}

Le travail c'est la santé, ne rien faire c'est la préservé !!!
1