Sujet : Re: Précision sur le C
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.sys.mac.programmationDate : 11. Jan 2025, 16:06:47
Autres entêtes
Organisation : There's no cabale
Message-ID : <vlu1e7$t5s$1@cabale.usenet-fr.net>
References : 1
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Le 09/01/2025 19:34, kurtz le pirate a écrit :
Hello,
J'ai cette fonction (trouvée sur le net) :
int find_empty(int board[SIZE][SIZE], int *row, int *col) {
for (*row = 0; *row < SIZE; (*row)++) {
for (*col = 0; *col < SIZE; (*col)++) {
if (board[*row][*col] == 0) {
return 1;
}
}
}
return 0;
}
Je ne suis pas sûr de bien comprendre les '*' devant les variables et
paramètres.
Pour les paramètres, on passe un pointeur sur les variables row et col
connues en dehors de cette fonction.
Oui. L'appel pourra être du genre :
if (find_empty(board, &row, &col)) {
// on sait que board[row][col] est vide
} else {
// il n'y a aucune case vide
}
Mais, dans les boucles 'for', on utilise encore les pointeurs *row et
*col. Ca veut dire que les variables en dehors de cette fonction sont
incrémentées dans les boucles ?
C'est ça. Elles sont mises à zéro, puis incrémentées dans les boucles.
En outre, si la fonction retourne 0, alors tu peux être sûr que row et
col ont été positionnées à la valeur SIZE. Je veux dire bien sûr les
row et col de mon exemple d'appel. D'ailleurs pour ma part j'aurais
écrit *prow et *pcol au lieu de *row et *col dans la définition de la
fonction : c'est complètement équivalent, mais pour moi ça rend plus
évident le fait qu'il s'agit de pointeurs.
-- Olivier Miakinen