[C] Pointeur d'un tableau dans un prototype
Résolu
misteradri1
Messages postés
21
Statut
Membre
-
misteradri1 Messages postés 21 Statut Membre -
misteradri1 Messages postés 21 Statut Membre -
Bonjour,
Je suis novice dans la programmation en c et j'essaie de comprendre comment on se sers de la bête noir du langage C: les pointeurs
J'ai écrit un programme capable de chercher si une réponse est fausse ou pas lors du remplissage d'un sudoku.
Sans fonction autre que int main () tout marche merveille.
Mais lorsque j'utilise une fonction en appelant un pointeur de tableau c'est la que tout bloque
De toute évidence je ne gère pas les pointeurs de tableau
Voici un cas ( les lignes qui provoquent des erreurs sont soulignées )
int main()
{
int k;
int sudoku[9][9]={{0,4,0,0,0,2,0,1,9},
{0,0,0,3,5,1,0,8,6},
{3,1,0,0,9,4,7,0,0},
{0,9,4,0,0,0,0,0,7},
{0,0,0,0,0,0,0,0,0},
{2,0,0,0,0,0,8,9,0},
{0,0,9,5,2,0,0,4,1},
{4,2,0,1,6,9,0,0,0},
{1,6,0,8,0,0,0,7,0}};
k=reste(sudoku[0][0]);
...}
int reste(int *Psudoku[][])
{
int k=0, i, j;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
if(Psudoku[i][j]==0){k++;}
}
}
return k;
}
voici le cas ou je rajoute un prototype:
int reste(int);
...............
int reste(int *Psudoku[][])
{..........................
int k=0, i, j;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
if(Psudoku[i][j]==0){k++;}
}
}
return k;
}
Si quelqu'un a un cours a proposé je suis preneur, je n'en ai trouvé aucun sur le net qui mele fonction et pointeur de tableau
Merci d'avance
Je suis novice dans la programmation en c et j'essaie de comprendre comment on se sers de la bête noir du langage C: les pointeurs
J'ai écrit un programme capable de chercher si une réponse est fausse ou pas lors du remplissage d'un sudoku.
Sans fonction autre que int main () tout marche merveille.
Mais lorsque j'utilise une fonction en appelant un pointeur de tableau c'est la que tout bloque
De toute évidence je ne gère pas les pointeurs de tableau
Voici un cas ( les lignes qui provoquent des erreurs sont soulignées )
int main()
{
int k;
int sudoku[9][9]={{0,4,0,0,0,2,0,1,9},
{0,0,0,3,5,1,0,8,6},
{3,1,0,0,9,4,7,0,0},
{0,9,4,0,0,0,0,0,7},
{0,0,0,0,0,0,0,0,0},
{2,0,0,0,0,0,8,9,0},
{0,0,9,5,2,0,0,4,1},
{4,2,0,1,6,9,0,0,0},
{1,6,0,8,0,0,0,7,0}};
k=reste(sudoku[0][0]);
...}
int reste(int *Psudoku[][])
{
int k=0, i, j;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
if(Psudoku[i][j]==0){k++;}
}
}
return k;
}
voici le cas ou je rajoute un prototype:
int reste(int);
...............
int reste(int *Psudoku[][])
{..........................
int k=0, i, j;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
if(Psudoku[i][j]==0){k++;}
}
}
return k;
}
Si quelqu'un a un cours a proposé je suis preneur, je n'en ai trouvé aucun sur le net qui mele fonction et pointeur de tableau
Merci d'avance
A voir également:
- [C] Pointeur d'un tableau dans un prototype
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Comment faire un tableau croisé dynamique - Guide
4 réponses
Salut,
Pourquoi passer par un double pointeur ? A part se compliquer la vie bien sûr ^^.
Lorsque tu envoies ton tableau en arguments, il sera converti en l'adresse du premier élément du tableau.
Ainsi :
Pour appeler la fonction : reste(sudoku); ou moins joli : reste(&sudoku[0][0]);
Et la déclaration de la fonction reste : int reste(int sudoku[][9]); /* toujours mettre le nombre de "colonnes"*/
Si t'as d'autres questions, n'hésite pas.
Cdlt,
Pourquoi passer par un double pointeur ? A part se compliquer la vie bien sûr ^^.
Lorsque tu envoies ton tableau en arguments, il sera converti en l'adresse du premier élément du tableau.
Ainsi :
Pour appeler la fonction : reste(sudoku); ou moins joli : reste(&sudoku[0][0]);
Et la déclaration de la fonction reste : int reste(int sudoku[][9]); /* toujours mettre le nombre de "colonnes"*/
Si t'as d'autres questions, n'hésite pas.
Cdlt,
Voila sa marche :-D
Ducoup je suis soulagé...
Cependant sa ne marche pas si je déclare le prototype: int reste(int); juste après les #include
Je pense que c'est du au (int) qui ne correspond pas au type de tableau, mais la je ne suis pas assez expérimenté pour l'affirmer
Ducoup je suis soulagé...
Cependant sa ne marche pas si je déclare le prototype: int reste(int); juste après les #include
Je pense que c'est du au (int) qui ne correspond pas au type de tableau, mais la je ne suis pas assez expérimenté pour l'affirmer