C : sizeof() d'un tableau recup en argument
bluekat
-
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
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 !
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
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,
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,