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

bluekat -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
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 833 Statut Contributeur 160
 
Salut,

Est-ce que t'as essayé de passé un pointeur de ton tableau en paramètre ?
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
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