IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Comment savoir si une variable a été initialisée?


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    Par défaut Comment savoir si une variable a été initialisée?
    Bonjour,
    je voudrais savoir s'il existe une fonction en Langage C du genre "empty" en PHP
    pour tester si une variable contient une valeur ,

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par défaut
    Salut,
    En C quand tu déclare une variable, tu réserve un espace mémoire ou tu pourra mettre ta valeur a l’intérieur. Seulement, en C, cet espace mémoire n'est pas réinitialiser quand tu le réserve, il y a donc de grande chance pour qu'il y ai une valeur laissé par un autre programme. Au finale ta variable n'est jamais vide, c'est a toi de veiller a l'initialiser correctement au risque de te prendre des segmentation fault.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Bonjour,
    je voudrais savoir s'il existe une fonction en Langage C du genre "empty" en PHP
    pour tester si une variable contient une valeur ,
    Une variable, c'est ni plus ni moins qu'un objet se trouvant dans un emplacement mémoire, dans lequel se trouve une valeur (sur 1 ou plusieurs bytes, cela dépend justement de ce type).
    Une variable ne peut pas "rien" contenir.
    De la même manière, une case mémoire ne peut pas "rien" contenir, même au moment même où on allume l'ordinateur. Elle contient toujours une valeur, la valeur de chaque bit la composant correspondant électroniquement à deux états opposés : haut (=1) ou bas (=0).

    Les langages tels que PHP, Javascript, etc ne gèrent pas les variables de la même manière. A la base, ce sont des langages interprétés et ils manoeuvrent différemment. En quelque sorte, chaque objet correspond à une entrée dans une sorte de tableau, contenant plusieurs indications : le type, la valeur, etc.

    Explique plus précisément ce que tu veux faire.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par midweb Voir le message
    pour tester si une variable contient une valeur ,
    Bonjour
    Une variable contient toujours une valeur !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    Par défaut
    je comprend qu'une variable contient tjrs une valeur
    voici ce que je compte faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include <stdio.h>
    #include <stdio.h>
     
    .............................;
     
    printf("\t\t     [1]-CREER TABLEAU\n\n");
    printf("\t\t     [2]-AFFICHER LE TABLEAU\n\n");
    printf("\t\t     [3]-DETERMNIER LA NOTE MINIMALE ET LA NOTE MAXIMALE\n\n");
    printf("\t\t     [4]-DETERMNIER LA SOMME ET LA MOYENE DES NOTES\n\n");
    printf("\t\t     [5]-TRIER LE TABLEAU DE NOTES\n\n");
    printf("\t\t     [6]-DETERMINER FREQUENCE D'UNE NOTE\n\n");
    printf("\t\t     [0]-QUITTER\n\n");
    scanf("%d",&rep);
    printf("\t\t     *******************************\n");
    .............................;
    }
    lors de l'ouverture la 1er fois l'utilisateur sera emmené a choisir l'option 1
    mais dans le cas ou celui-ci choisir directement l'option 2
    c'est vrai que le tableau contient des valeurs mais pas celles voulues

    je compte donc dire à l'utilisateur que le tableau est "vide" et donc qu'il doit dabord le creer

    j'arrive à le faire en passant par un booleen ou une boucle if
    mais je voudrais qu'avant de faire les calculs dans l'option 2 le programme verifie
    je precise que le tableau est de type float
    comment faire dans ce cas ?(si cela existe vraiment )

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Si je comprends bien, tu veux créer un tableau dynamique ? Dans ce cas, la fonction malloc est ton amie.

    Il faut déclarer un pointeur qui devra être initialisé avec la valeur NULL. C'est justement une valeur spéciale qui indique que sa valeur (l'adresse vers laquelle il pointe) n'est pas valide et qu'il ne faut donc pas déréférencer.

    Quand tu voudras choisir l'option de 2 à 6 dans ton menu, il suffira de tester d'abord si le pointeur est à NULL ou pas.
    Mieux encore : tu peux aussi afficher les options de 2 à 6 uniquement si le pointeur n'est pas à NULL, ce qui oblige à choisir d'office l'option 1.

    Par contre, il faut supprimer l'option 1 une fois que le tableau est créé, sinon tu vas faire une fuite de mémoire.

    Pour la création du tableau, si c'est un tableau à une seule dimension (ça a l'air d'être le cas ?), tu peux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type_des_elements tableau = malloc (nombre_d_elements * sizeof *tableau);

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    Par défaut
    je test pour voir

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par midweb Voir le message
    je comprend qu'une variable contient tjrs une valeur
    lors de l'ouverture la 1er fois l'utilisateur sera emmené a choisir l'option 1
    mais dans le cas ou celui-ci choisir directement l'option 2
    c'est vrai que le tableau contient des valeurs mais pas celles voulues

    je compte donc dire à l'utilisateur que le tableau est "vide" et donc qu'il doit dabord le creer
    jeroman t'a donné une solution évoluée nécessitant une certaine maitrise du C. Mais même sans ça, ton problème se résous de façon classique que tu aurais trouvé tout seul si tu avais approfondi le raisonnement que ta remarque (que j'ai mise en rouge) entraine. Puisque ton tableau a déjà une valeur et qu'elle ne te convient pas alors tu le remplis toi-même avec une valeur spéciale qui te convienne et lorsque l'utilisateur choisis "2", si le tableau contient la valeur spéciale alors c'est que l'utilisateur n'est pas passé par le choix "1". D'ailleurs je dis "tout le tableau" mais dans les faits, la première case suffit. Ou alors, comme tu l'as dit, par un flag booléen (d'ailleurs le pointeur initialisé à NULL cité par jeroman joue à la fois le rôle de tableau et le rôle de booléen).

    Citation Envoyé par midweb Voir le message
    j'arrive à le faire en passant par un booleen ou une boucle if
    "boucle if" pfff...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    Oui je suis d'accord avec Sve@r, vu les questions que tu poses, je pense que
    malloc n'est pas vraiment ton ami pour le moment. je te conseillerai une variable globale qui te renseigne sur ton tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(rep==1&&drp=0)
        creerTableau(...);
    else
        puts("Tableau deja creer, choisisez une autre option\n");
    sachant qu'au demarage ton programme declare int drp=0;
    puis dans la creation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Type creerTableau(Type...,Type...,...)
    {
       ...//inserer creation ici
       drp=1;
    }

  10. #10
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 91
    Par défaut
    Puisque ton tableau a déjà une valeur et qu'elle ne te convient pas alors tu le remplis toi-même avec une valeur spéciale qui te convienne
    Cette phrase est la phrase qui répond le mieux a la question de départ.
    Je rajouterais que la "valeur spéciale" qui te convient, en fait, ca n'est pas uniquement une valeur "qui te convient".

    En effet, il te faut considérer une valeur qui est hors de ton ensemble, afin d'éviter de pouvoir la retrouver une fois que ton traitement sera lancé.

    Par exemple, pour un tableau de notes française, la valeur -1 est une valeur parfaite. Elle est hors de ton ensemble, facile a comprendre, facile a tester.

    Si tu choisissais "3" comme valeur de variable entière non initialisée (encore une fois, cela ne veut rien dire en C !), comment ferais tu la distinction entre la note "3" et la valeur spéciale de non-initialisation "3". Cela peut paraitre débile de dire cela, car pour un ensemble aussi restreint que celui d'un tableau de notation française c'est presque instinctif, mais dans des cas plus complexes, c'est une question importante a se poser.

Discussions similaires

  1. Comment savoir si une variable est vide ?
    Par Antoun dans le forum Windows
    Réponses: 5
    Dernier message: 25/05/2008, 00h31
  2. [débutant] Comment savoir si une variable est définie
    Par guidav dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/11/2006, 17h47
  3. Réponses: 3
    Dernier message: 28/07/2006, 15h45
  4. Réponses: 9
    Dernier message: 06/02/2006, 14h12
  5. Comment savoir si une variable est initialisée ?
    Par nabix dans le forum Général Python
    Réponses: 8
    Dernier message: 10/03/2005, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo