Bonjour,

Voici mon problème j'ai la fonction suivante qui me permet de créer dynamiquement un tableau 2D :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void creat_plateau(int n,int **plateau){
	int i;
	int j;
	plateau = malloc((2*n+1)*sizeof(int*));
	for (i=0;i<2*n+1;i++){
		plateau[i]=malloc((2*n+1)*sizeof(int));
	}
	for (i=0;i<2*n+1;i++){
		for (j=0;j<2*n+1;j++){
			plateau[i][j]=0;
		}
	}
return;
}
et le main suivant j'ai mis uniquement la partie qui nous interressai :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
int main(){
	int n;
	int **plateau;
	n=2;
	creat_plateau(n,plateau);
......
Mais cette solution retourne une erreur car le pointeur n' est pas initialisé

j'ai donc penser a la solution suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int ** creer_plateau(int n){
	int i;
	int j;
	int **plateau;
 
	plateau = malloc((2*n+1)*sizeof(int*));
	for (i=0;i<2*n+1;i++){
		plateau[i]=malloc((2*n+1)*sizeof(int));
	}
	for (i=0;i<2*n+1;i++){
		for (j=0;j<2*n+1;j++){
			plateau[i][j]=0;
		}
	}
return plateau;
}
 
int main(){
	int n;
	int **plateau;
	char jouer;
.........
	plateau = creer_plateau(n);
.........
Je voudrai donc savoir si cette solution (qui marche car mon programme marche) principalement était juste.
Peut-on retourner un ** pour une fonction ? (meme si je pense que oui vu que mon compilateur ne me dis rien.

Pour info je suis sous Visual studio 2008.

Merci d'avance.