Différence entre définition et déclaration de fonction en C
mickmac
Messages postés
415
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voilà tout est dans la question, pouvez vous me dire la différence entre déclaration et définition Si vous avez des exemples simples pour me permettre d'encore mieux me faire comprendre c'est pas de refus
Merci
Voilà tout est dans la question, pouvez vous me dire la différence entre déclaration et définition Si vous avez des exemples simples pour me permettre d'encore mieux me faire comprendre c'est pas de refus
Merci
A voir également:
- Différence entre définition et déclaration de fonction en C
- Déclaration - Guide
- Fonction si et - Guide
- Différence entre tcp et udp - Guide
- Difference entre million et milliard - Accueil - Technologies
- Difference entre mode avion et donnees mobiles - Guide
3 réponses
Dans la déclaration on ne met que le prototype, sans mettre le code, ça permet de savoir que la fonction existe(ra), ce qui permet de l'utiliser même si la fonction est définie ailleurs dans le code.
Dans la définition on spécifie ce que fait la fonction, avec le code complet.
Remarque : on peut faire plusieurs fois la déclaration, mais la définition doit être unique, sinon ça n'a plus de sens.
Exemple :
Dans la définition on spécifie ce que fait la fonction, avec le code complet.
Remarque : on peut faire plusieurs fois la déclaration, mais la définition doit être unique, sinon ça n'a plus de sens.
Exemple :
int f(int n); // déclaration int g(int n) {// définition return (n<0) ? 1 : f(n-2)+g(n-1); } int f(int n) { // définition return (n<0) ? 1 : f(n-1)*g(n-2); }
Merci bien
ok et donc dans un main on n'utilise que la déclaration alors si on mets la définition de la fonction après le main C'est ça?
Et si on définit que l'on veut utilisé avant le main, c'est pas la peine de redéclarer la fonction est juste?
Et jute une autre question si je fait un tableau [20] que l'utilisateur va remplir grâce au scantf,
il faut bien que je fasse
for (i=0;i<20;i++)
ou j'ai scanf("%d",&tableau[i])
Il faut bien que je mets le & n'est ce pas?
Et comment dois je écrire pour obtenir le même principe avec getchar ??
Merci encore
ok et donc dans un main on n'utilise que la déclaration alors si on mets la définition de la fonction après le main C'est ça?
Et si on définit que l'on veut utilisé avant le main, c'est pas la peine de redéclarer la fonction est juste?
Et jute une autre question si je fait un tableau [20] que l'utilisateur va remplir grâce au scantf,
il faut bien que je fasse
for (i=0;i<20;i++)
ou j'ai scanf("%d",&tableau[i])
Il faut bien que je mets le & n'est ce pas?
Et comment dois je écrire pour obtenir le même principe avec getchar ??
Merci encore
ok et donc dans un main on n'utilise que la déclaration alors si on mets la définition de la fonction après le main C'est ça?
Et si on définit que l'on veut utilisé avant le main, c'est pas la peine de redéclarer la fonction est juste?
Yes. Il faut que la fonction soit déclarée au moment de l'appel (peu importe qu'elle soit définie).
Il faut bien que je mets le & n'est ce pas?
Oui. &tableau[i] signifie l'adresse mémoire de la variable tableau[i]. Ce qui peut s'écrire également : tableau+i (sans &).
Et comment dois je écrire pour obtenir le même principe avec getchar ??
tableau[i]=getchar();
Et si on définit que l'on veut utilisé avant le main, c'est pas la peine de redéclarer la fonction est juste?
Yes. Il faut que la fonction soit déclarée au moment de l'appel (peu importe qu'elle soit définie).
Il faut bien que je mets le & n'est ce pas?
Oui. &tableau[i] signifie l'adresse mémoire de la variable tableau[i]. Ce qui peut s'écrire également : tableau+i (sans &).
Et comment dois je écrire pour obtenir le même principe avec getchar ??
tableau[i]=getchar();
ok et donc dans un main on n'utilise que la déclaration alors si on mets la définition de la fonction après le main C'est ça?
Et si on définit que l'on veut utilisé avant le main, c'est pas la peine de redéclarer la fonction est juste?
Quel charabiat ! Chapeau fiddy si tu as compris ce qu'il veux dire.
Dans la fonction main, il n'y a ni déclaration ni définition de fonction, juste des utilisations. Pour utiliser une fonction dans le corps de n'importe quelle autre fonction (main compris) il faut quelle soit déclarée avant, en dehors du corps de la fonction. La définition, tu la mets là où tu veux, après, avant ou mieux dans un autre fichier.
Et si on définit que l'on veut utilisé avant le main, c'est pas la peine de redéclarer la fonction est juste?
Quel charabiat ! Chapeau fiddy si tu as compris ce qu'il veux dire.
Dans la fonction main, il n'y a ni déclaration ni définition de fonction, juste des utilisations. Pour utiliser une fonction dans le corps de n'importe quelle autre fonction (main compris) il faut quelle soit déclarée avant, en dehors du corps de la fonction. La définition, tu la mets là où tu veux, après, avant ou mieux dans un autre fichier.
une dernière question pourquoi quand j'écrit se programme ça très marche bien alors que je croyais que si on voulais remplir n notes il fallait un tableau de taille n+1 à cause du \0 à la fin qui perd une casse.
int main()
{
int n=0;
int som=0;
float moy=0;
printf("combien avez vous de notes?\n");
scanf("%d",&n);
int notes[n];
int i=0;
for(i=0;i<n;i++)
{
printf("entrez votre note \n");
scanf("%d",¬es[i]);
}
for (i=0;i<n;i++)
{
som=som+notes[i];
}
moy=som/n;
printf("la moyenne est %f",moy);
return 0;
}
int main()
{
int n=0;
int som=0;
float moy=0;
printf("combien avez vous de notes?\n");
scanf("%d",&n);
int notes[n];
int i=0;
for(i=0;i<n;i++)
{
printf("entrez votre note \n");
scanf("%d",¬es[i]);
}
for (i=0;i<n;i++)
{
som=som+notes[i];
}
moy=som/n;
printf("la moyenne est %f",moy);
return 0;
}
Pas forcément. On peut faire une déclaration sans prototype.