Si je ne l'a déclare pas dans main il me met à la ligne 65 :
"error :'nombreEntre' undeclared (first use in this fonction)
c'est pour ça que je l'ai déclaré par la suite.
J'ai l'impression que tu confonds également deux notions, que sont la déclaration, et l'initialisation (pour les fonctions, il y a aussi la définition).
La déclaration identifie une variable ou une fonction. Exemple
int monEntier; // monEntier est une variable de type int
float* maFonction(int premierArg, int* secondArg); // maFonction prend 2 arguments, un entier et un pointeur vers un entier, et retourne un pointeur vers un flotant.
L'initialisation, c'est donner une valeur à cette variable lors de la déclaration, mais ce n'est pas obligatoire.
/*
* Utilisation sans initialisation
*/
int monEntier;
monEntier = generationEntier();
// ou encore
monEntier = 3;
/*
* Utilisation avec initialisation
*/
int monEntier = generationEntier();
// ou encore
int monEntier = 3;
La définition d'une fonction, c'est la desctiption de ce que fait la fontion:
int multiplier(int a, int b) {
return a*b;
}
En C, toute utilisation de variable ou de fonction doit être précédée dans le code par sa déclaration, pas forcément par la l'initialisation (mais alors, il vaut mieux pour toi que la première utilisation soit une affectation
) ni la définition.
Exemple de structure de code:
// Mes prototypes (déclarations)
int multiplier(int a, int b);
/*
* Main
*/
int main(int argc, char** argv) {
int monEntier; // ici je déclare
int premier = 3;
int second = 4;
[...]
monEntier = multiplier(premier, second);
[...]
}
// Définitions des fonctions
int multiplier(int a, int b) {
return a*b;
}
Ensuite, suivant la version de C que tu utilises (ANSI, C99, ...), les variables peuvent devoir être déclarée en début de bloc, avant tout autre code.