Besoin daide, débutant

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...)
Configuration: Windows XP
Firefox 2.0.0.11

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. essaye de metre

    int main(....)
    {
    ....
    fonction(*a );
    }
    int fonction( & a )
    {
    , a+5 ;
    }
    1. 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
      1. 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
        1. 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...;)
          1. 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
            1. 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
              1. 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
                1. mr matafix pourquoi tu m'as donner se site
                  on est des potes n'est ce pas