Probleme declaration fonction - C - Programmation
Marsh Posté le 28-11-2005 à 23:57:25
normal puisque ta fonction est
| Code : 
 | 
 
void designe sans retour, donc pas de return necessaire. 
Si tu veux retourner p ta fonction devrait etre du genre  
| Code : 
 | 
 
 
edit : et pense a utiliser les balises code   
 
Marsh Posté le 29-11-2005 à 00:22:18
Terrible, merci, 
je sais question bète mais des fois je skotche sur des trucs idiots 
et desolé pour les balises! 
a +
Marsh Posté le 29-11-2005 à 08:01:16
| gocho a écrit : normal puisque ta fonction est 
   
   | 
 
Copie de structure ? Non merci... 
 
Statique :  
| Code : 
 | 
 
ou 
Dynamique 
| Code : 
 | 
 
 
Marsh Posté le 29-11-2005 à 19:08:37
![[:cupra] [:cupra]](https://forum-images.hardware.fr/images/perso/cupra.gif) ...c'est laquelle est la difference entre ma solution et la tienne en dynamique?
...c'est laquelle est la difference entre ma solution et la tienne en dynamique? 
oui oui c'est l'etoile je l'ai vu hein! mais ca va changer quoi ?![[:el g] [:el g]](https://forum-images.hardware.fr/images/perso/el g.gif)
Marsh Posté le 29-11-2005 à 19:13:26
Avec l'étoile tu retournes une adresse au lieu d'une structure, c'est quand même plus rapide d'exécution.  
Et puis, on est en C, vive les pointeurs : tu auras le plaisir de tester le retour de la fonction, car il pourrait être NULL, et tu devras ensuite libérer la mémoire allouée car cette adresse a été initialisée par un retour de malloc, voilà, tu commences à faire du C.
Marsh Posté le 29-11-2005 à 22:12:03
![[:cupra] [:cupra]](https://forum-images.hardware.fr/images/perso/cupra.gif) euh je pense tout simplement que c'est pas l'auteur du post a qui tu parle là Emmanuel...
euh je pense tout simplement que c'est pas l'auteur du post a qui tu parle là Emmanuel... 
Marsh Posté le 30-11-2005 à 14:59:58
| gocho a écrit : 
 | 
 
 
La première fonction reçoit un pointeur sur la structure à remplir => Elle peut donc la remplir mais cela suppose que la fonction appelante s'est occupée de la phase "réservation de la mémoire pour y stocker la structure". 
La fonction appelante s'en sert comme ça 
| ...  | 
 
ou bien comme ça 
| ...  | 
 
 
La seconde fonction ne reçoit rien  => Cela lui impose de tout créer elle-même (s'occuper de toute la phase "allocation mémoire + vérification, remplir, etc). 
Une fois qu'elle a créé et remplie la structure, elle renvoie un pointeur sur cette dernière pour que la fonction appelante puisse s'en servir 
La fonction appelante s'en sert comme ça 
| ...  | 
Marsh Posté le 30-11-2005 à 17:17:25
struct personne Saisie_Personne() 
<=> 
struct personne *Saisie_Personne(void) 
 
dans le 1er cas la structure est copiée, pas dans le 2eme.
Marsh Posté le 28-11-2005 à 23:34:14
bonjour
voici mon programme;
# include <stdio.h>
# include <stdlib.h>
# define max 15 // taille max d'une chaine de caractere
# define pMax 100 // nombre de personne maximal dans le repertoire
int i;
struct personne{
char nom[max];
char prenom[max];
unsigned long tel;
int pl;
};
struct personne p;
struct personne tab[pMax];
for(i=0;i<pMax;i++)
{
tab[i]=0;
}
void Saisie_Personne(){
printf("Entrer le nom de la personne:\n" );
scanf("%s",p.nom);
printf("Entrer le prenom de M(Mde): \n" );
scanf("%s",p.prenom);
printf("Entrer le numero de telephone: \n" );
scanf("%lu",&p.tel);
p.pl=1;
return (p);
}
Mon compilateur me dit que le type de la fonction est un icompatible avec un return!
Merci de me donner le type a utiliser.