vincemail
Messages postés79Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 8 décembre 2006
-
5 mars 2006 à 14:40
vincemail
Messages postés79Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 8 décembre 2006
-
6 mars 2006 à 21:13
Bonjour, j'aimerai savoir s'il est préférable de passer en arguments d'une fonction (ou d'une méthode) des pointeurs ou bien des adresses... Je ne vois pas trop la différence en fait.
Merci !
Vincent
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 5 mars 2006 à 20:48
un pointeur (*), c juste un int qui contient une adresse memoire.
par exemple, si tu fais
int x = 25;
char y = (*((char*)x))
alors il ira lire y dans l'adrese memoire 25 (attention c juste un exemple, faut surtout pas faire ca !!!)
Donc, pour acceder a une zone memoire par un pointeur, ton pc lit un int, va a ladresse qui correspond et lit ta valeur. en gros en assembleur je pense que ca correspond à 2 instructions MOV, donc autant dire que ca coute pas trop cher
Par contre, j'ai aucune idee de comment fonctionne la reference. A priori, je dirai que que c basé sur un pointeur, sauf que tu as pas besoin de mettre une "->" mais un "." , et que tu est oblige de linstancier a la declaration. sinon je pense que c'est kif kif.
Si quelqun sait comment fonctionne une reference, je lui cede la place ...
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 6 mars 2006 à 21:08
Excusez - moi , j'aurais bien voulu ajouter , pour clore tout ceci qu'a mon avis
une fonction appelee fct /
void fct(int& a, int& b) == void fct(int* a, int* b) en general
mais la meilleur serait plus explicitement
void fct(int* const a, int* const b);
MErci
je suis heureux de faire partie d'une grande famille ...!
vincemail
Messages postés79Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 8 décembre 2006 5 mars 2006 à 16:07
Je me suis sans doute mal exprimé Je voulais savoir s'il valait mieux passer en argument la valeur de l'adresse ou bien un pointeur... donc s'il vaut mieux écrire : 'void fonction(int *a);' ou 'void fonction(int &a);' en fait je veux savoir s'il y a un avantage à la transmission par référence, en particulier au niveau vitesse d'execution (que je dois optimiser à tout prix). Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 6 mars 2006 à 04:27
Une reference est une adresse type pointeur constant .
Exemple:
void fonction(int& a);
int a = 0;
fonction(a);
> la fonction ira chercher la reference de a . La reference notee &a qui est un pointeur equivalent a int* const ptr avec ptr adresse de a;
passer une reference , est strictement la meme chose qu'un pointeur normal... a une condition pres , l'utilisation que tu fais de ta fonction : fais des recherches sur les constructeurs copie par reference , et copie complete
je suis heureux de faire partie d'une grande famille ...!
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 6 mars 2006 à 04:34
a une condition pres , l'utilisation que tu fais de ta fonction : fais
des recherches sur les constructeurs copie par reference , et copie
complete
heuuuu keske t'entend par la nickydaquick ? tu veu dire que le comportement peut changer entre un pointeur et une reference si tu fai appel a un constructeur dans la fonction appellée???
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 6 mars 2006 à 21:06
Non , mais que les 2 constructeurs d'une classe , meme si l'implementation peut sembler vouloir dire la meme chose , ne sont pas appeles dans les meme situations. Pour ce qui concerne la fonction , ca marche mais ne prenez surtout pas pour acquis que ces 2 modes se valent partout. :D
je suis heureux de faire partie d'une grande famille ...!