begin process at 2012 05 28 09:11:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

arguments : adresse ou pointeur ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

arguments : adresse ou pointeur ?

dimanche 5 mars 2006 à 14:40:11 | arguments : adresse ou pointeur ?

vincemail

    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
dimanche 5 mars 2006 à 15:04:24 | Re : arguments : adresse ou pointeur ?

julienbj


Oui, evidemment et fort heureusement d'ailleurs.
Un pointeur est une varible qui contient une adresse. Donc on dit souvent qu'un pointeur est une adresse.

Exemple de passage de pointeur:
void mafonction(char *ptr1, int *ptr2)
{
//Ton code
}

Tu remplaces le prototype comme tu veux, autant de param que tu veux, le type que tu veux.

Vive le C
Tchao
Savon
dimanche 5 mars 2006 à 16:07:45 | Re : arguments : adresse ou pointeur ?

vincemail

    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
dimanche 5 mars 2006 à 16:59:28 | Re : arguments : adresse ou pointeur ?

TeniX

Membre Club
Salut, Je pense que par pointeur c'est le mieu personnellement et c'est ce qui est le plus utilisé (je pense) tchao
dimanche 5 mars 2006 à 20:48:18 | Re : arguments : adresse ou pointeur ?

Guillemouze

Réponse acceptée !
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 ...
dimanche 5 mars 2006 à 20:58:33 | Re : arguments : adresse ou pointeur ?

vincemail

    Ok Bob l'éponge, je pense aussi que ca doit être un peu kif kif, juste une commodité d'écriture. Merci bien.
lundi 6 mars 2006 à 04:27:10 | Re : arguments : adresse ou pointeur ?

nickydaquick

Membre Club

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 ...!
lundi 6 mars 2006 à 04:34:45 | Re : arguments : adresse ou pointeur ?

Guillemouze

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???
lundi 6 mars 2006 à 21:06:11 | Re : arguments : adresse ou pointeur ?

nickydaquick

Membre Club

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 ...!
lundi 6 mars 2006 à 21:08:21 | Re : arguments : adresse ou pointeur ?

nickydaquick

Membre Club
Réponse acceptée !

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 ...!

1 2

Cette discussion est classée dans : adresse, pointeur, arguments


Répondre à ce message

Sujets en rapport avec ce message

Donner une adresse à un pointeur... [ par anosan ] Salut,J'aimerais savoir comment spécifier à un pointeur quelle adresse il doit pointer (sachant que cette adresse n'est pas celle d'une variable!).Mer PROB avec pointeur THIS [ par jfk20004 ] Salut,tout ce que je sais à propos du pointeur this:-c'est un pointeur sur l'adresse d'un objet-il permet des appels en cascade de fonctionsquelqu'un "Comparaison" pointeur [ par LordBob ] Bonjour a tous,voila j'ai des petits problèmes avec une application et mes pointeurs... en fait je récupéren en début de programme l'adresse IP d'une pointeur sur une fonction [ par AmineTheGreat ] Bonjour,J'ai déclarer un pointeur sur une fonction et je veux récuperer l'adresse de cette fonction comment faire?int (*task1)( );je veux mettre l'adr pointeur-mémoire [ par baby3378 ] bonjours à tous,Voila j'ai voulu créé un programme qui peut acceder à la mémoire grace aux pointuer, je m'explique:_un pointeur se place sur une adres Arguments et pointeur. [ par moumouteb ] Bonjours. Voici le bout de code qui pose problème:int Jeu (*ecran) {     ecran = SDL_SetVideoMode(Fenetre.x, Fenetre.y, 32, SDL_HWSURFACE | SDL_DOUBLE Mettre une adresse dans un pointeur [ par pepsidrinker ] Bonjour!vous trouverez sans doute ma question stupide,mais jaimerai avoirun moyen pour mettre une adresse voulus dans un pointeur.exemple :long* a;a = Passage d'arguments par valeur ou par adresse [ par ToutEnMasm ] Salut,J'ai besoin de savoir comment le c++ determine si un argument est passé par adresse ou par valeur.Bien que sachant le rôle du *,& et du int,cons pointeur de pointeur de pointeur [ par am1150 ] Salut, quelqu'un peut-il me dire pourquoi à partir de la 3emme adresse de **a est égale à 0? code : char* EnerconTextAlTest3(char* NamePark,int Nu Mémoire partagée et pointeur [ par darsh99 ] Bonjour,J'essai de faire passer un tableau dynamique, un pointeur donc, d'un programme à un autre, l'adresse est bien passée et les champs non dynamiq


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,435 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales