C : sizeof() d'un tableau recup en argument

Fermé
bluekat - 9 avril 2010 à 20:46
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 avril 2010 à 23:53
void fct1 (){

char nom [18]
void recupererString(char[]);

int a=sizeof(nom);
printf("%2d\n",a);

recupererString(nom);
}

void recupererString(char nom[]){

int a=sizeof(nom);
printf("%2d\n",a);
}


M'affiche :

18
8

Effectivement le 18 est le taille du tableau dans la fct1 (==> correct)
Et je voudrais un 18 a la place du 8 (depuis fct recupererString). Je pense qu'il met 8 car il s'agit de la taille de l'adresse... possible ?

comment faire pour qu'il connaisse la taille du tableau dans la fonction recupererString()

d'avance Merci !

2 réponses

vlmath Messages postés 794 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
9 avril 2010 à 21:02
Salut,

Est-ce que t'as essayé de passé un pointeur de ton tableau en paramètre ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
9 avril 2010 à 23:53
Bonjour,
Oui, c'est effectivement la taille de ton pointeur. Et je préciserai même que t'es sur une machine 64 bits ;-))).
Le seul moyen pour récupérer la taille et de l'envoyer en paramètre.
Exemple de définition de la variable nom : char nom[16];
Exemple du prototype : void recupererString(char nom[], size_t taille);
Exemple d'appel : recupererString(nom, sizeof nom);

Cdlt,
0