J'utilise la fonction de hachage SDBM dans un programme et nous avons une question concernant la définition de la fonction, reproduite ci-dessous:placement Argument de fonction en C
static unsigned long
sdbm(str)
unsigned char *str;
{
unsigned long hash = 0;
int c;
while (c = *str++)
hash = c + (hash << 6) + (hash << 16) - hash;
return hash;
}
Je comprends par tâtonnement que la fonction attend un unsigned char *
, mais pourquoi le placer après les parenthèses et avant l'accolade? Je ne savais pas que ce soit une option, et je ne trouve rien à me dire pourquoi il est pas écrit comme ceci:
static unsigned long
sdbm(unsigned char *str)
{
....
}
Bien sûr, si je le modifier pour être comme celui-ci, la fonction semble toujours fonctionner parfaitement bien, alors pourquoi le faire? Quelle est la différence?