Portée de variable

Résolu
Roro8883 Messages postés 70 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 1 février 2008 - 2 mars 2006 à 21:52
Roro8883 Messages postés 70 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 1 février 2008 - 3 mars 2006 à 12:18
Bonjour, comment peut-on déclarer une variable globale à l'intérieur d'une fonction ???

Je m'explique, voici mon code (très simplifié) :

void initialisation ()
{
int nb_prog;
... // Définition de l'entier de nb_prog
char* chaine[(nb_prog - 1)];
...
}

et j'aimerais que la variable (tableau) "chaine" soit accessible dans d'autres fonctions.Le problème c'est que cette variable dépend de celle d'avant.

Comment faire ? svp

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 mars 2006 à 11:57
chaine = malloc(sizeof char* * (nb_prog - 1));
...
free(chaine);
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 mars 2006 à 22:09
char* chaine[(nb_prog - 1)];

Déja tu n'a pas le droit d'écrire ca (même si gcc l'accepte). Considère que la taille d'un tableau doit être une constante. Voila comment tu peux faire:

char** chaine;

void initialisation ()
{
int nb_prog;
... // Définition de l'entier de nb_prog
chaine = new char*[nb_prog - 1];
...
}
0
theneoiceman Messages postés 78 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 23 avril 2010
3 mars 2006 à 01:16
En supplément de ce que Vecchio56 a dit pense a bien libérer la mémoire allouée par le new a l'aide de l'opérateur delete[] . Cette opération est souvent négligée bien que très importante.

Voila, bon codage.

Mess with the best, die like the rest
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
3 mars 2006 à 02:06
En gros, une variable globale doit toujours être déclaré à l'extérieure de toute fonction et généralement, au début de ton code. Ainsi, cette variable ne sera éffacé qu'a la fin du programme et non à la fin de la fonction et toute donné qu'elle contient peut être utiliser ou redéfinie par toute fonction l'utilisant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Roro8883 Messages postés 70 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 1 février 2008
3 mars 2006 à 11:49
Le problème c'est que je programme en C et non en C++, donc je peux pas utiliser new ... delete !

Je crois que l'on peut utiliser malloc ... free mais comme je suis débutant je sais pas trop comment faire !

Si qqn pouvait m'aider .. ?
0
Roro8883 Messages postés 70 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 1 février 2008
3 mars 2006 à 12:18
Merci, ça marche très bien maintenant ...
0
Rejoignez-nous