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 :

un peu de théorie sur le passage des variables


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 59
    Points : 38
    Points
    38
    Par défaut un peu de théorie sur le passage des variables
    Bonjour,
    j'ai une question pas très importante, dont j'aimerai qu'on me valide la réponse, ou qu'on me l'infirme.
    je voulais savoir pourquoi en C, lorsqu'on accède à une variable par son nom, on en fait une copie?
    Ce que je pense, c'est qu'en terme d'électronique, le faite de lire une variable décharge les condensateurs contenant l'information. Donc pour éviter de perdre l'information, on copie la variable(ok on la lit une fois, donc il faut la réécrire pour ne pas perdre l'info) mais après cette copie, on travaille donc sur une autre variable (qui à le même nom) et cela sécurise le système?

    Ca parait tordu et compliqué, mais c'est la seule raison que je vois.

    Avez vous une idée?

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Si j'ai bien compris la question ... et si mes souvenirs d'assembleur sont bons. (on me corrigera si je dis des bêtises).

    Le problème relève de l'architecture des processeurs: ceux-ci utilisent ce qu'on appelle un registre et certaines instructions des processeurs ne peuvent être exécutées que dans ce registre. Ainsi, pour additionner deux variables, le compilateur crée des instruction de copie des données de la mémoire vive vers le registre avant d'exécuter l'instruction.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 392
    Points : 23 718
    Points
    23 718
    Par défaut
    Bonjour,

    Citation Envoyé par morpheusmg Voir le message
    je voulais savoir pourquoi en C, lorsqu'on accède à une variable par son nom, on en fait une copie?
    Ce n'est pas le cas.

    Je dirais même que le C est un des rares langages où l'on travaille encore directement sur l'emplacement de la variable en mémoire sans passer par des références intermédiaires et invisibles aux yeux du programmeur.

    Par contre, tu fais peut-être allusion au « passage par copie » des arguments d'une fonction. Passer les arguments par copie est la façon la plus « naturelle » de le faire car, d'une part, sur le point de vue purement formel, quand tu fais, par exemple, « sin (x) », c'est la valeur de x que tu transmets à la fonction. Pas la variable elle-même en tant qu'objet. Et comme d'un point de vue mathématique, toujours sur le plan formel donc, « sin(x) » est une expression mathématique qui a une valeur intrinsèque, il n'y a pas non plus de notion d'appel et de renvoi de résultat. Donc, on ne s'attend pas a priori que le fait d'avoir évoqué « sin(x) » à un moment du programme puisse entraîner la modification implicite de la variable.

    Et d'autre part, les valeurs que tu passes à ta fonction ne sont pas forcément variables : tu peux très bien écrire « sin(5) », par exemple. Dans ce cas, il n'y pas de référence à une variable puisqu'il n'y a pas de variable du tout.

    Du point de vue de la fonction, les arguments que tu lui passes sont vus comme des variables locales ordinaires.

    Ce que je pense, c'est qu'en terme d'électronique, le faite de lire une variable décharge les condensateurs contenant l'information. Donc pour éviter de perdre l'information, on copie la variable(ok on la lit une fois, donc il faut la réécrire pour ne pas perdre l'info) mais après cette copie, on travaille donc sur une autre variable (qui à le même nom) et cela sécurise le système?
    Non, non. Le rafraîchissement de la mémoire électronique — quand il est nécessaire — est assuré par un automate, électronique, lui-aussi, donc purement hardware. Heureusement que le développeur n'a pas à se charger de cela…

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 59
    Points : 38
    Points
    38
    Par défaut
    Merci!
    Super pour les réponses, ça met les idées en ordre!

Discussions similaires

  1. Une question sur le stockage des variables
    Par UnReveDeCryptomeria dans le forum C
    Réponses: 10
    Dernier message: 08/06/2006, 23h37
  2. Réponses: 4
    Dernier message: 04/06/2006, 16h53
  3. [PEAR] Objet : Question sur le passage de variable
    Par Norabfr dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/01/2006, 01h07
  4. Question toute bête sur le passage de variable
    Par pekka77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/11/2005, 12h39
  5. Un peu de lumière sur l'arborescence des fichiers de Linux
    Par Noki dans le forum Administration système
    Réponses: 6
    Dernier message: 07/04/2004, 16h16

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