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 :

Utilité de la fonction static


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    eleve ingenieur
    Inscrit en
    Janvier 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : eleve ingenieur
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2017
    Messages : 1
    Par défaut Utilité de la fonction static
    Bonjour à tous ! J'ai un petit souci : j'aimerais savoir comment utiliser la fonction "static". Je l'ai lu dans un PDF mais j'ai pas vraiment compris comment ça marche…

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    static n'est pas une fonction mais un mot-clef du langage, qui peut qualifier fonctions ou variables lorsqu'utilisé dans leurs déclarations.

    Dans quel contexte était-il utilisé ? Peux-tu nous montrer le morceau de code que tu n'as pas saisi ?

  3. #3
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,

    en gros tu peux retrouver le mot-clé static à 3 endroits :
    • lors de la déclaration d'une variable
      pour comprendre son action il faut déjà savoir ce que sont la durée de vie et la visibilité d'une variable. La durée de vie d'une variable est l'intervalle de temps pendant lequel la variable existe en mémoire, la visibilité indique les endroits à partir desquels tu peux accéder à cette variable. Déclarer une variable statique va lui donner une durée de vie égale à celle du programme même si elle est déclarée localement dans une fonction, et, si elle est n'est pas locale à une fonction, restreindre sa visibilité au source dans lequel elle est déclarée. Il est à noter que les variables statiques sont par défaut initialisées, elles sont en général placées dans une section particulière et ne sont donc ni allouées sur la pile ni sur le tas. Tu peux essayer par exemple d'appeler plusieurs fois cette fontion pour en voir les effets :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      int get_id(void)
      {
        static int id=0;
        return id++;
      }
    • lors de la déclaration d'une fonction
      une fonction marquée static réduit la visibilité de la fonction au source dans lequel elle est déclarée. Utilisé avec inline on obtient une fonction «qui n'existera pas en tant que telle». Si elle est appelée, alors le compilateur va directement insérer son code au lieu de l'appeler. C'est comme une macro mais en mieux (bien souvent). C'est aussi un des rares cas où il est intéressant de placer du code dans un header. Par exemple :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      static inline int min(int a, int b)
      {
        return a<b?a:b;
      }
      remplacera avantageusement une macro du même nom et offrira entre autre une vérification de type, évitera les effets de bords indésirables d'évaluation multiple des paramètres, …
    • lors ce la déclaration d'un paramètre de type tableau
      le mot clé se place alors entre les crochets avant la taille. C'est un contrat que tu passes avec le compilateur : tu t'engages à ne fournir à cette fonction que des paramètres ayant au moins le nombre indiqué d'éléments. Par exemple avec
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      void foo(size_t size, const char string[static size]);
      tu t'engages à toujours appeler foo avec une chaîne ayant pour taille minimum la valeur du premier paramètre. Cela permet au compilateur de faire des hypothèses pour mieux optimiser le code produit.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2006, 11h35
  2. [C#] Appel d'une fonction static impossible ?
    Par TheParadoX dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/08/2006, 10h23
  3. fonction static dans une class
    Par Stany dans le forum C++
    Réponses: 3
    Dernier message: 16/06/2006, 14h43
  4. Définition d'une fonction static ?
    Par tintin72 dans le forum C++
    Réponses: 9
    Dernier message: 22/12/2005, 11h50
  5. Réponses: 3
    Dernier message: 15/12/2005, 22h04

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