C'est tout simplement parce que int piste[] correspond à int* piste, un poiteur
=> les pointeurs ont tous une longueur de 4 octets, d'où le 4 renvoyé dans ta procédure
Dans le main, par contre, int piste[6] n'est pas un pointeur, sa taille est : 6 * sizeof(int) = 24
Le mieux est de garder un argument "taille" => comme dans la plupart des fonctions Windows, voire DOS.
Si tu veux vraiment utiliser un unique argument :
- Place une valeur arbitraire marquant la fin (du genre 1024 ou -1....)
- Fait une recherche de cette valeur :
int len=0;
while( true )
{
if( Piste[len] != 1024 ) // 1024 = marquage
len++;
else
break;
}
Voilà, c tout ce que j'en pense