bonjour j'arrive pas a differencier entre les doubles et les float
entre passage par adresse et par reference veuillez me guider
Version imprimable
bonjour j'arrive pas a differencier entre les doubles et les float
entre passage par adresse et par reference veuillez me guider
La différence entre float et double est une différence de précision. Les premiers sont codés sur 32 bits, les seconds sur 64 bits. Voir la norme IEEE 754 pour plus de précisions.
Le "passage par adresse" n'existe pas à proprement parler en C++, on passe en fait des adresses par valeur. Le passage par référence c'est le fait de passer un paramètre et non une copie de celui-ci (en interne c'est la même chose que de passer son adresse).
Plus de précisions sur tout ça dans la FAQ.
Salut,
Heuu... il est préférable d'éviter de siter un nombre de bits en ce qui concerne la taille des différents types...Citation:
Envoyé par Laurent Gomila
En effet, cela dépend, avant tout, de la taille d'un caractère, qui n'est pas forcément codé sur 8 bits, et la norme en C et en C++ présise juste que le nombre de bits de tel type doit etre plus grand ou égal à celui de tel autre type, qui lui meme est plus grand ou égal à celui de tel autre type...
Bref, la taille réelle des types de base dépend en grande partie de l'architecture visée, mais aussi du compilateur utilisé :P
Quand à ta deuxième question: une référence, c'est l'alias d'un objet, et ca se trouve, en prenant un très gros raccourcis quand meme, à peu pres à mi chemin entre l'objet lui-même et un pointeur sur cet objet...
Ou, si tu préferes, c'est "comme un pointeur" mais avec des différences notables...
Pour éviter aux autres de pousser de hauts cris en lisant ces deux explications, je vais quand meme aller un peu plus loin:
En interne, une référence va fonctionner un peu comme un pointeur (on va passer "l'adresse à laquelle se trouve" l'objet), mais avec les restrictions que:
- ca ne peut pas etre égal à NULL (l'objet doit exister)
- tout ce que tu fais sur ta référence est répercuté sur l'objet
- ca ne peut pas etre alloué dynamiquement (tu ne peu pas faire un new ou un delete sur une référence)
- ca ne provoque pas la recopie de l'ensemble du contenu de l'objet en mémoire
Par contre, à l'usage, cela permet de travailler exactement "comme si c'était l'objet" en question:
- tu n'as pas besoin de "déréférencer" ton objet
- tu utilises reference.membre et non reference->membre
Ainsi, là ou, dans une fonction qui prendrait un pointeur comme parametre, tu devrais écrire
tu pourras te contenter d'un simpleCode:
1
2
3
4
5
6
7 void mafonct(type *ptr) { ptr->nom="machin"; std::cout<<(*ptr); ... }
exactement comme si ref était un objet de type "type" classique...Code:
1
2
3
4
5
6 void mafonct(type &ref) { ref.nom="machin"; std::cout<<ref; }
L'explication ne se veut pas exhaustive ni forcément "précisement exacte"... elle veut juste permettre de comprendre un peu le principe ;)...
Pour plus d'info, ben, le lien vers la FAQ a déjà été donné ;)