Portée de variable [Résolu]

Messages postés
70
Date d'inscription
mardi 25 février 2003
Dernière intervention
1 février 2008
- - Dernière réponse : Roro8883
Messages postés
70
Date d'inscription
mardi 25 février 2003
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
16
3
Merci
chaine = malloc(sizeof char* * (nb_prog - 1));
...
free(chaine);

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vecchio56
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
16
0
Merci
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];
...
}
Commenter la réponse de vecchio56
Messages postés
78
Date d'inscription
lundi 14 avril 2003
Dernière intervention
23 avril 2010
0
Merci
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
Commenter la réponse de theneoiceman
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
10
0
Merci
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
Commenter la réponse de SAKingdom
Messages postés
70
Date d'inscription
mardi 25 février 2003
Dernière intervention
1 février 2008
0
Merci
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 .. ?
Commenter la réponse de Roro8883
Messages postés
70
Date d'inscription
mardi 25 février 2003
Dernière intervention
1 février 2008
0
Merci
Merci, ça marche très bien maintenant ...
Commenter la réponse de Roro8883

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.