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
...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 ?
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
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 : ...c'est laquelle est la difference entre ma solution et la tienne en dynamique? |
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.