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 :

creer une constante


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut creer une constante
    bonjour,
    j´ai un programme en c++ de type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    long nom_program(....)
    {
    // declaration variable
    static double data1111[10];
    static double data9[] = {10};
    ..............
     
    }
    ou je declare des tableaux et d´autres choses. Mais moi j´aimerais que le 10 soit declare en dehors du programe, avant long nom_program(....). Je ne sais pas comment faire.

  2. #2
    Membre éprouvé
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Par défaut
    En paramètre constant ?

  3. #3
    Membre confirmé Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Par défaut
    pourquoi déclares-tu tes variables statiques à l'intérieur de ta méthode ? Déclare-les en dehors, tu y auras accès partout comme ça, et tu pourras définir la taille en dehors de toute méthode particulière

    Tiens regarde ici, ça t'aidera probablement

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    merci pour vos reponses, en faite je voudrais faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    #define a 10
     
    long name_prg(...)
    {
    // declaration variable
    static double data1111[a];
    static double data9[] = {a};
    ..............
     
    }
    En faite mon programme est dans une application et est appele quand on rentre le nom du prg dans une interface graphique. Si je met les static en dehors du programme ca ne marche pas.

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Et qu'est-ce qui ne marche pas dans ton écriture ?

    Remarque, en C++, on préférera écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int const a = 10;
    // ou, équivalent
    const int a = 10;
    // plutôt que 
    #define a 10
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par steph496 Voir le message
    bonjour,
    j´ai un programme en c++ de type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    long nom_program(....)
    {
    // declaration variable
    static double data1111[10];
    static double data9[] = {10};
    ..............
     
    }
    ou je declare des tableaux et d´autres choses. Mais moi j´aimerais que le 10 soit declare en dehors du programe, avant long nom_program(....). Je ne sais pas comment faire.
    Ca, ce n'est pas un programme, c'est une fonction

    Un programme est, classiquement, constitué de plusieurs fonctions pour lesquelles nous essayons qu'elle aient chacune une responsabilité qui leur est propre
    Citation Envoyé par Furr Voir le message
    pourquoi déclares-tu tes variables statiques à l'intérieur de ta méthode ? Déclare-les en dehors, tu y auras accès partout comme ça, et tu pourras définir la taille en dehors de toute méthode particulière

    Tiens regarde ici, ça t'aidera probablement
    Attention, il faut voir quel est l'objectif réel...

    Le fait de déclarer une variable statique au sein d'une fonction permettra de récupérer cette variable avec la valeur qu'elle avait obtenue lors de l'appel précédent de la fonction lorsqu'on invoque à nouveau la fonction...

    Ce n'est pas du tout pareil que des variables globales, qui sont accessibles depuis n'importe où dans le programme et qui sont à éviter autant que possible, exception faite des constantes (que l'on déclarera sans doute statiques et globales, même si on préfèrera les inclure soit dans la structure pour le compte de qui elle agit soit dans un espace de noms)

    Si donc, le but est de pouvoir récupérer data9 et data1111 à chaque fois que l'on invoque la fonction programme, l'idéal reste de les déclarer statiques dans la fonction...

    Si le but est de les manipuler ailleurs, le mieux sera surement de les passer en argument.

    Si, enfin, le nombre d'élément est systématiquement fixe et peut intervenir partout, l'idéal sera de le déclarer sous la forme d'une variable globale constante (voire, si cela a un sens, en tant que membre statique d'une structure)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    merci pour vos reponses. En faite ca marche avec le define. Par contre j´ai une autre question. Quelle est la difference entre
    et

  8. #8
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par steph496 Voir le message
    merci pour vos reponses. En faite ca marche avec le define. Par contre j´ai une autre question. Quelle est la difference entre
    et
    La première va déclarer un tableau contenant un seul élément de type double (et on peut donc se poser la question de l'utilité d'avoir un tableau), alors que la seconde va, simplement, déclarer une variable (unique) de type double...

    La différence majeur tiendra dans le fait que tu pourra accéder directement à data5 de manière tout à fait normale, alors que tu ne pourra accéder au seul élément de data qu'en demandant soit "ce qui est pointé" par data (car une variable représentant un tableau est en réalité un pointeur sur son premier élément) soit l'élément se trouvant à l'index 0 du tableau.

    Il faut en outre noter que data sera un tableau qui ne pourra jamais contenir plus d'un élément
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #9
    Membre confirmé Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Par défaut
    Citation Envoyé par koala01 Voir le message

    Attention, il faut voir quel est l'objectif réel...

    Le fait de déclarer une variable statique au sein d'une fonction permettra de récupérer cette variable avec la valeur qu'elle avait obtenue lors de l'appel précédent de la fonction lorsqu'on invoque à nouveau la fonction...

    Ce n'est pas du tout pareil que des variables globales, qui sont accessibles depuis n'importe où dans le programme et qui sont à éviter autant que possible, exception faite des constantes (que l'on déclarera sans doute statiques et globales, même si on préfèrera les inclure soit dans la structure pour le compte de qui elle agit soit dans un espace de noms)

    Si donc, le but est de pouvoir récupérer data9 et data1111 à chaque fois que l'on invoque la fonction programme, l'idéal reste de les déclarer statiques dans la fonction...

    Si le but est de les manipuler ailleurs, le mieux sera surement de les passer en argument.

    Si, enfin, le nombre d'élément est systématiquement fixe et peut intervenir partout, l'idéal sera de le déclarer sous la forme d'une variable globale constante (voire, si cela a un sens, en tant que membre statique d'une structure)
    Je lui ai répondu en pensant avoir compris ce qu'il voulait faire, après bon il est clair que je n'avais cerné toute la question.
    Merci pour ces précisions

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    merci beaucoup pour votre aide, et pour la rapidite des reponses.

Discussions similaires

  1. [TP]comment creer une disquette bootable (les fichiers)
    Par ludovic5532 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 25/10/2003, 18h46
  2. Partage d'une constante entre 2 fichiers en C
    Par elsargento dans le forum C
    Réponses: 6
    Dernier message: 29/09/2003, 22h17
  3. Créer une diquette de boot
    Par gwen-al dans le forum Administration système
    Réponses: 2
    Dernier message: 02/07/2003, 14h48
  4. jaimerais savoir commen creer une grille.......
    Par zephyr dans le forum Flash
    Réponses: 5
    Dernier message: 29/04/2003, 12h14
  5. [VB6]Créer une Base de données
    Par ThierryAIM dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/04/2003, 17h24

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