Pointeur...

Résolu
CherryBlondy Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je me tourne à nouveau vers vous pour un p'tit problème ^^

voilà dans un sous programme je declare un pointeur du type int *a

et j'imerais que lorsque je retroune dans le main je lui affecte la valeur de b.

le problème c'est que dans mon sous programme lorsque j'écrit :

*a = b;

sachant que dans moin main j'appelle la procédure en placant &a dans les paramètres.

bah il aime po =( et si j'enlève l'étoile, il aime mais là, c'est moi qui aime pas puisqu'il me renvoie pas la valeur de b du le sous pogramme.

J'espère avoir était assez clair.

d'avance merci beaucoup

bonne soirée =)

2 réponses

Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
Bonjour CherryBlondy,
Crée ton pointeur dans ton main, passe ensuite son adresse (&a) à ton sous-programme (pas besoin de le retourner), en principe ça devrait fonctionner.

Cordialement,
1
CherryBlondy Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
une fois que j'ai fait ça , comment je fais pour renvoyer dans le main une valeur obtenue dans ce sous programme ?

merci déjà pour ton aide =)
0
CherryBlondy Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Je te montre mon bout de code :

void exemple(int *hauteur, int *largeur)
{
//declaration des variables
int lig, col;

scanf("%dX%d", hauteur, largeur);
lig = *hauteur;
col = *largeur;

dans mon main :

int *largeur, *hauteur;
exemple(&hauteur, &largeur);
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329 > CherryBlondy Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,
Regarde mon exemple plutôt :
#include <stdio.h>
#include <stdlib.h>

void getValues(int*, int*);

int main(int argc, char *argv[])
{
  int l, h;
  getValues(&l, &h);
  printf("largeur = %d, hauteur = %d\n", l, h);
  
  system("PAUSE");	
  return 0;
}

void getValues(int* l, int* h) {
     scanf("%dX%d", l, h);    
}


Quand tu passes une variable par pointeur, tu n'as pas besoin de la retourner par ta fonction car c'est la variable elle-même qui est modifiée dans le sous-programme (c'est un peu comme si tu étendais la portée de la variable). Ici tu vois bien que dans la fonction getValues, on stocke les valeurs entrées par l'utilisateur dans l et h. Sans retourner ces valeurs, on y a accès depuis la fonction main (on affiche les nouvelles valeurs avec printf).

Cordialement,
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
void exemple(int *hauteur, int *largeur)
{
//declaration des variables
int lig, col;

scanf("%dX%d", hauteur, largeur);
lig = *hauteur;
col = *largeur;
}
dans mon main :

int *largeur, *hauteur;
exemple(&hauteur, &largeur);

Quelle HORREUR !!!
dans le main largeur et hauteur son des pointeurs. lors de l'appel de l'exemple, tu passes l'adresse de ces pointeurs, soit un truc similaire à des int**.
Il faut raisonner en type. Il faut bien voir qu'un pointeur est une variable comme une autre, il a juste un rôle particulier avec l'opérateur * ou [].
Largeur et hauteur sont des variables, et leur type est (int*) c'est à dire que largeur est une variable qui contient une adresse mémoire d'un champ de type int.
0