en fait, c'est plutôt le fait que gcc donne la "bonne" taille dans le main() qui est "surprenant"
sizeof est un operator résolu à la compilation, donc rien d'étonnant à ce que sur des paramètres il ne puisse que donner la taille du pointeur.
Je ne sais pas exactement comment gcc fait, mais il doit se souvenir que v n'est pas n'importe quel int*, mais celui initialisé juste au dessus.
à noter que même dans le main(), un simple sizeof((int*)v) donne bien 4. (ce qui est heureux d'ailleurs :))
En résumé, non il n'est pas possible d'obtenir 40 dans ta fonction sans retenir l'info quelque part.
[^] # Re: Le paramètre de la fonction
Posté par Yann Hodique (site web personnel) . En réponse au message taille d'un tableau avec sizeof. Évalué à 2.
sizeof est un operator résolu à la compilation, donc rien d'étonnant à ce que sur des paramètres il ne puisse que donner la taille du pointeur.
Je ne sais pas exactement comment gcc fait, mais il doit se souvenir que v n'est pas n'importe quel int*, mais celui initialisé juste au dessus.
à noter que même dans le main(), un simple sizeof((int*)v) donne bien 4. (ce qui est heureux d'ailleurs :))
En résumé, non il n'est pas possible d'obtenir 40 dans ta fonction sans retenir l'info quelque part.