Besoin daide, débutant

El roux -  
matafix Messages postés 45 Statut Membre -
Bonjour a tous,
je suis un débutant en language c, j,aimerais bien atteindre un niveau "potable" en tant que programmeur du dimanche, mais plusieurs notions reste abstraites (ex : les pointeurs?!)
si quelqun pourrai m'indiquer un site avec un tutoriel détaillé, et plus important que tout, des exercices! a la tonne!
j'ai passé un gros moment sur le tutoreil de mateo21 sur lesiteduzero et j'ai progresser mais le manque d'idée de conception de programme de bas niveau manque...j'ai besoin d'une motivation la!
en gros, quelque trucs pour m'aider a progresser?

et j,ai aussi quelques bugs avec mes pointeurs, lorsqu'on envoie une valeur a une fonction, on initialise le pointeur dans le main ou dans la fonction en tant que tel?
et une fois envoyé, je me sert du meme pointeur pour changé la valeur a ladresse de la variable?
et une fois terminer, je renvoie le pointeur?
et poruquoi c'est pas clair merde...

exemple:
int main(....)
{
....
fonction(*a ou a);
}
int fonction(int *a ou a)
{
et la, a+5 ou *a+5
}

(c'était pour illustrer en gros...)

8 réponses

bonbino85 Messages postés 50 Statut Membre
 
essaye de metre

int main(....)
{
....
fonction(*a );
}
int fonction( & a )
{
, a+5 ;
}
0
le père
 
Bonjour

lorsqu'on envoie une valeur a une fonction, on initialise le pointeur dans le main ou dans la fonction en tant que tel ?

Lorsqu'on envoie une valeur à une fonction, c'est une copie de cette valeur . Si tu la modifies dans la fonction, elle n'est pas modifiée dans le main :
void main () {
  int x;
 x=3;
 machin(x);
 printf ("%d\n",x);  // x vaut toujours 3
}

void machin (int x) {
// le x dans cette fonction est un entier, mais ce n'est qu'une copie de la variable du main. 
// On pourrait aussi bien l'appeler y ou toto  
x=6;
}


Si tu veux que ta variable soit modifiée dans le main, il faut passer à la fonction l'adresse de la variable, c'est à dire un pointeur.
void main () {
  int x;
 x=3;
 machin2 (&x);         // l'opérateur & te donne l'adresse de la variable.
 printf ("%d\n",x);   // x vaut 6 maintenant

}

void machin2 (int * x) {
// le x dans cette fonction est un pointeur.
  *x=6;                   // x=6 serait interdit, x est un pointeur et non pas un int. *x représente "l'entier à l'adresse x"
}


L'un des pièges dans cette histoire, c'est que si ta variable est un tableau, il ne faut pas utiliser le "&" pour obtenir son adresse. le C considère un pointeur comme l'adresse de début d'un tableau
int tabl [5];
machin(tabl);  // pas de & avant le tabl. tabl[0] vaut 6 maintenant


Il y a encore beaucoup de choses, digère d'abord celles-là.
Pour ce qui est du tutorial, il y en a sûrement mais je n'ai pas de lien à te proposer
0
El roux
 
Alors je crois que j'ai compris, en envoyant l'adresse a la fonction, le pointeur X (le nom du pointeur na pas vraiment dimportance) contient l'adresse
Mais la, le C se charge tout seul de faire les modifications a l'adresse que contient le pointeur!
en mettant *x, je lui dit va changer la valeur a ladresse que tu contient
et pour ma question d'initialiser le pointeur, si j'indique que la valeur recu pari cette fonction en est un, pas besoin de le déclarer!
c'est bien ca?
et merci pour ton aide le pere
0
mype Messages postés 2449 Statut Membre 437
 
j'ai pas bien compris ta question...
j'ai cru que comprendre que tu voulais envoyer un pointeur a la fonction et qu'elle modifier ce pointeur
dans ce cas il faut utiliser un pointeur de pointeur dans la fonction
ex:
ds le main
truc(&x)

et la fonction
void truc( int **x)

voila en esperant que c'était bien ta question...;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
El roux
 
olala...mal de tete, petit cerveau lol, explique le pointeur du pointeur mype svp

jenvoie ladresse de x, qui arrive dans la fonction sous forme de pointeur de pointeur?ou est lutilité?

et merci pour tous de vos reponses
0
mype Messages postés 2449 Statut Membre 437
 
c'est simplement pour modifier l'adresse d'un pointeur et pas la valeur de l'adresse qu'on utilise le pointeur de pointeur
par exemple sa sert a faire pointer le pointeur sur une autre adresse
0
matafix Messages postés 45 Statut Membre 2
 
je te conseil de visiter franceioi
c'est un site qui explique le c d'une maniere simple et comprehensible mé maleuresemen il n'ya pas le cours des pointeurs
il existe aussi un bon site pour le c c https://www.ltam.lu/tutoriel-ansi-c/prg-c_c.htm
cherche et tu trouve
0
zargoss Messages postés 78 Statut Membre 3
 
mr matafix pourquoi tu m'as donner se site
on est des potes n'est ce pas
0
matafix Messages postés 45 Statut Membre 2 > zargoss Messages postés 78 Statut Membre
 
je crois
0
matafix Messages postés 45 Statut Membre 2
 
pk ??
comment ta trouvé le site
0
zargoss Messages postés 78 Statut Membre 3
 
mdr c moi ton ami toufik
0