Portée de variable [Résolu]

Roro8883 70 Messages postés mardi 25 février 2003Date d'inscription 1 février 2008 Dernière intervention - 2 mars 2006 à 21:52 - Dernière réponse : Roro8883 70 Messages postés mardi 25 février 2003Date d'inscription 1 février 2008 Dernière intervention
- 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
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 3 mars 2006 à 11:57
3
Merci
chaine = malloc(sizeof char* * (nb_prog - 1));
...
free(chaine);

Merci vecchio56 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de vecchio56
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 2 mars 2006 à 22:09
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
theneoiceman 78 Messages postés lundi 14 avril 2003Date d'inscription 23 avril 2010 Dernière intervention - 3 mars 2006 à 01:16
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
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 3 mars 2006 à 02:06
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
Roro8883 70 Messages postés mardi 25 février 2003Date d'inscription 1 février 2008 Dernière intervention - 3 mars 2006 à 11:49
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
Roro8883 70 Messages postés mardi 25 février 2003Date d'inscription 1 février 2008 Dernière intervention - 3 mars 2006 à 12:18
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.