Problème d'initialisation de pointeur
Bonjour,
Voici mon problème j'ai la fonction suivante qui me permet de créer dynamiquement un tableau 2D :
Code:
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:
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:
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.