CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Question théorie reference

Coucouzzz
Coucouzzz
Niveau 3
23 mars 2014 à 23:54:06

Bonsoir tout le monde!

Voila ma question a peu d'utilité pratique mais j'aimerai tout de même voir les chose plus clairement :)

Quand on utilise une référence, j'ai toujours supposé que après compilation, c'était pareil que si on avait utilisé des pointeurs.

D'où la question:

Si j'envoie un char à une fonction, cela prendre 1 octet.
Mais si j'envoie une référence à une fonction, cela prendra 1 octet, ou 8?

c'est tout, merci à vous et bonne soirée :)

godrik
godrik
Niveau 30
24 mars 2014 à 00:14:38

J'imagine que tu parles en C++. En general les references sont implemente avec des pointeurs. Mais je ne sais pas si le standard fournit une quelconque garantie. Si c'est pour compter un truc a la main, compter un pointeur me semble raisonnable. Mais ne te repose pas sur cette information.

Mjonir
Mjonir
Niveau 26
24 mars 2014 à 01:39:03

Difficile à dire ce qui va se passer exactement une fois le code compilé. Par exemple j'ai fait le test avec un code simple pour une fonction f(char) et une fonction f(char&), qui modifie son argument dans son corps:

http://pastebin.com/mQ5N795e

Dans les deux cas, lu très vite l'assembleur généré ne fait strictement ni l'un ni l'autre et effectue des manipulations direct sur la pile. En tout cas il n'y a pas de différence au niveau de cette fonction entre les deux codes. Et ça, c'est sans les optimisations.

De toute façon, y a l'alignement. Tu n'as peut-être besoin de passer qu'un byte, mais pour des raisons de rapidité il y a de bonnes chances que le compilo en balance de toute façon 4 à tous les coups. En bref, le langage te définit la sémantique, l'implémentation exacte tu n'en sauras rien.

Le seul piège dans l'histoire serait le raisonnement: "Je n'ai pas envie d'une sémantique de copie sur mon argument qui est un type primitif, donc je vais passer une référence constante à ma fonction, ce sera plus léger.". Je ne vois aucun cas où ça pourrait l'être, par contre avec un compilo pas malin assez ça peut faire pire. Ça a aussi le gros inconvénient de rendre le prototype moins clair.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment