Tutoriel C - généricité

Поділитися
Вставка
  • Опубліковано 30 жов 2024

КОМЕНТАРІ • 65

  • @hassanbrahimadouma5776
    @hassanbrahimadouma5776 Рік тому

    cette vidéo est très clair et intéressante je vous remercie bcp

  • @blancromario9898
    @blancromario9898 7 років тому +3

    Salut franchement vos vidéos m'on beaucup aidé et surtout que tu expliques vraiment très bien par la façon dont tu fais le détail des chaques points...c'est vraiment génial,merci beaucoup pour votre souci à nous partager votre connaissanceBah de là je voulais vous dire que j'adorais que vous nous faites un tuto sur java au plus vite stp

    • @formation-video
      @formation-video  7 років тому

      Bonjour et merci à toi. Le Java (ainsi que le C# et le C++) viendront plus tard sur la chaîne mais ce sont des formations que j'ai bien l'intention de proposer :)

    • @blancromario9898
      @blancromario9898 7 років тому +1

      FormationVidéo d'accord j'attends avec impatience et merci beaucoup d'avance... bah j'aimerais savoir qe si avec le C seulement,il est possible de créer une très bonne jolie app pour Android ? si oui,qell explotation alors?

    • @blancromario9898
      @blancromario9898 7 років тому +1

      FormationVidéo d'accord j'attends avec impatience et merci beaucoup d'avance... bah j'aimerais savoir qe si avec le C seulement,il est possible de créer une très bonne jolie app pour Android ? si oui,qell explotation alors?

    • @formation-video
      @formation-video  7 років тому

      Pour faire une appli Android, on va préférer utiliser le Java ;)

    • @blancromario9898
      @blancromario9898 7 років тому +1

      FormationVidéo ha ouais c' bien ce qe je croyais... merci beaucoup pour avoir investi du temps à me répondre aux commentaires,c' gentil de ta part

  • @jevousaicompris4471
    @jevousaicompris4471 7 років тому +5

    OUI !!! On en veut du C ! Pleins de petits trucs qui ameliorent notre code !!! Tu as d'autres videos de prevues ?

    • @formation-video
      @formation-video  7 років тому +2

      Bonjour, et oui bien sûr, je reprends le travail dès que je suis de retour chez moi =)

    • @jevousaicompris4471
      @jevousaicompris4471 7 років тому +1

      Super ! J'ai hate !

    • @formation-video
      @formation-video  7 років тому +1

      Tant mieux alors, à très vite :) !

  • @glennyoubi456
    @glennyoubi456 3 роки тому

    Merci beaucoup 👌🏾

  • @walidhouidi4495
    @walidhouidi4495 4 роки тому

    Merci beaucoup

    • @formation-video
      @formation-video  4 роки тому


      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ UA-cam (personnel) : ua-cam.com/users/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • @cyprienct8947
    @cyprienct8947 7 років тому +1

    Salut je débute dans la programation et je voudrai connaître le logiciel que tu utilise pour écrie t'es programme ou alors je voudrais savoir sur quelle logiciel je peut écrire et exécuter des programmes

    • @formation-video
      @formation-video  7 років тому

      Bonjour, pour écrire du code, j'utilise un éditeur de code : Sublime Text. Il en existe plein d'autres aussi comme Notepad++, Atom, Brackets, Visual Studio Code, etc.
      Et pour compiler, j'utilise tout simplement un compilateur (gcc), dont son installation est expliqué sur ce tutoriel -> ua-cam.com/video/qdnhK0EzX8g/v-deo.html

    • @cyprienct8947
      @cyprienct8947 7 років тому +1

      FormationVidéo merci ; )

    • @formation-video
      @formation-video  7 років тому

      De rien ;)

  • @anisking3577
    @anisking3577 6 років тому +1

    salut ! mrc bq pour ces vedeos !! je veus te poser une qst : pourquoi j'ai meme adresse que tu as a le pointeur Generique au debut (de int et double 0028FF38 et 0028FF30) ?

    • @formation-video
      @formation-video  6 років тому

      Ah ah, nous avons le même ordinateur =D
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne UA-cam ? ua-cam.com/users/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

    • @anisking3577
      @anisking3577 5 років тому

      @@formation-video je regole pas :3

  • @pacvivien3141
    @pacvivien3141 7 років тому +2

    encore une fois de plus géniale ta vidéo !! j'ai testé un peu ce que tu as dit en faisant un callback :
    void* callback( (void*)(*f_ptr)(void*), void* arg )
    {
    return f_ptr(arg);
    }
    mais le compilateur me retourne l'erreur 'f_ptr' n'a pas été déclaré dans le scope, je ne comprend absolument pas l'erreur car je n'ai pas a déclaré f_ptr car c'est la parametre d'une fonction, c'est comme si je mettais void fonction(int a) et que le compilateur me disait 'a' n'a pas été déclaré dans le scope...
    as tu une idée du probleme ?

    • @formation-video
      @formation-video  7 років тому

      Bonsoir, peux-tu me montrer ton code complet ? (avec pastebin.com) pour voir si j'ai les mêmes erreurs ? Merci.

    • @formation-video
      @formation-video  7 років тому

      Coucou, tu dois juste dans les paramètres de la fonction *callback* retirer les parenthèses autour du premier void (le type de retour) et ce sera bon :)

    • @pacvivien3141
      @pacvivien3141 7 років тому +1

      merci beaucoup ! le probleme venait bien de la, merci :)

    • @formation-video
      @formation-video  7 років тому

      De rien, ça va mieux aller comme ça =)

  • @JPFBamen
    @JPFBamen 7 років тому +1

    Je vois qu'on se fait plaisir sur la publicité ^^ il y en a une toutes les deux minutes...
    Sinon vidéo très instructive!

    • @formation-video
      @formation-video  7 років тому +2

      Non, toutes les 5 minutes la publicité, comme ça a toujours été le cas.
      De plus, si tu as visionné une publicité à un moment, la prochaine ne sera pas affichée - il faut bien que les vidéos rapportent un minimum.
      Et merci pour la vidéo :).

    • @JPFBamen
      @JPFBamen 7 років тому +2

      C'est lié au fait du visionnage des vidéos en x2 ;) t'inquiète je comprends...

    • @formation-video
      @formation-video  7 років тому

      Ah oui possible :)

  • @salehindev7407
    @salehindev7407 3 роки тому

    Salut, merci c’est très bien expliquer. J’aimerais savoir comment définir une structure d’un tableau à type générique en C ? Merci

    • @formation-video
      @formation-video  3 роки тому

      Bonjour, pas compris ce que tu veux exactement

    • @marcjus4392
      @marcjus4392 3 роки тому

      @@formation-video je pense qu’il veut faire un peu comme les vector en c++

  • @nozanimos2685
    @nozanimos2685 2 роки тому

    Salut Jason, merci pour ces explications qui m’emmènent à une question. Je voudrais me coder un mini jeu international dans lequel j'ai besoin de récupérer les infos clavier en passant par les adresses des touches, avoir leur nombre et la disposition du clavier en fonction du matériel, du pays et de la langue du clavier... J'essaye de trouver des infos là dessus aussi un petit tuto donnant des pistes sur les fonctions utilisables pour aboutir serait le bienvenu 🙂 Peut-être utiliserions-nous les pointeurs génériques ;-)

    • @formation-video
      @formation-video  2 роки тому +1

      Bonsoir. Pour cela, il vaut mieux passer par une bibliothèque comme SDL (elle est abordée dans le cours)

    • @nozanimos2685
      @nozanimos2685 2 роки тому

      @@formation-video Merci Jason :-) justement je suis en plein dessus et je trouve tes cours méga intéressants. Reste plus qu'à trouver la ou les fonctions permettant d'extraire ce type de données. Je me suis fixé un but à atteindre : reprendre les travaux du soft tux-type, codé en C avec SDL 1 dont la dernière version 1.8.3-5 est unstable. J'ai plusieurs idées qui me sont apparues notamment apporter une couche plus loufoque au logiciel de manière à apporter une formation plus ludique...
      Je ne me fais pas d'illusion, il y a beaucoup d'heures de travail avant de parvenir à quelque chose de concret mais ce langage me plait vraiment 🙂

    • @formation-video
      @formation-video  2 роки тому +1

      Cela reste un très bon projet en soit, et une bonne manière de mettre en pratique ce que tu apprends 👍

  • @Angel-486
    @Angel-486 3 роки тому +1

    21:34 pourquoi a-t-on le résultat de la fonction calculer, alors qu'elle ne contient pas de return ?

    • @formation-video
      @formation-video  3 роки тому +2

      C'est la tout le principe de la généricité ici. On fait référence à une fonction (via le pointeur de fonction). Il y a donc bien un retour puisqu'on fait appel à ce moment à la fonction d'addition 👍

    • @Angel-486
      @Angel-486 3 роки тому +1

      @@formation-video d'accord je pensais qu'il fallait obligatoirement mettre un return (Java l'exige il me semble). Merci pour ton explication ! 👍 Tes vidéos sont super bien !

    • @formation-video
      @formation-video  3 роки тому +2

      Non justement, Java ne l'exige pas. Si une méthode a "void" comme type de retour, elle n'a rien à retourner (exemple avec la méthode main d'ailleurs) 👍

    • @Angel-486
      @Angel-486 3 роки тому +1

      @@formation-video oui, je parlais d'une méthode int, double, etc. par exemple! Merci pour ta réponse :)

    • @formation-video
      @formation-video  3 роки тому +2

      Oui, et bien c'est la même chose ici

  • @olivierrabillon5460
    @olivierrabillon5460 Рік тому

    Je souhaite faire en c une liste qui puisse sois gerer des entier sois des double. Comme les liste aurons les meme méthode ajout/ afficher... Je pensais faire la généricité avec un pointeur void comme au début de la vidéo mais du coup je comprends pas comment dereferencer pour avoir la valeur ? Le but etant de ne creer qu'une seule structures pour ma liste mais avoir le choix du type. Le but final est par exemple je suis en train de faire en sdl un jeu astéroïdes. Je voudrais pouvoir gerer une liste d'astéroïdes et une liste de tir de mon vaisseau chacun etant un strut perso mais avoir un seul fichier c pour la gestion de liste ?

    • @formation-video
      @formation-video  Рік тому +1

      Voilà quelques pistes pour aider : pastebin.com/zTd8bND0

    • @olivierrabillon5460
      @olivierrabillon5460 Рік тому

      @@formation-video merci c'est très clair il faut caster le pointeur via les pointeur de fonction. Merci je test ça

    • @formation-video
      @formation-video  Рік тому

      👍

  • @sylvaing4866
    @sylvaing4866 7 років тому +1

    Du coup j'ai une question: Comment faire du refactoring en C si on ne peut pas variabiliser le typage d'une fonction?
    Je m'explique. J'en avait marre à chaque Allocation dynamique d'écrire le code suivant
    maStruct = malloc(sizeof(*maStruct));
    if(maStruct == NULL) {
    fprintf(stderr, "allocation erreur");
    exit(EXIT_FAILURE);
    }
    J'ai voulu ecrire une fonction générique pour ça en faisant
    void allocateFor(void *object) {
    object = malloc(sizeof(*object));
    if(object == NULL){
    fprintf(stderr, "Memory allocation Error.
    ");
    exit(EXIT_FAILURE);
    }
    return;
    }
    Mais plantage à cause du déférencement impossible...
    Alors comment fait-on?

    • @formation-video
      @formation-video  7 років тому +1

      J'ai fait ceci et ça fonctionne : pastebin.com/ERuTZFtZ

    • @sylvaing4866
      @sylvaing4866 7 років тому +1

      ha ok merci! Mais j'arrive pas à comprendre pourquoi faire return myData alors qu'en entrée de fonction on a un pointeur et qu'on y affecte malloc avec la ligne mydata = malloc(sizeof(*mydata))?

    • @formation-video
      @formation-video  6 років тому

      Car tu veux faire du générique, donc tu ne sais pas de quel type sera la donnée (int ? char ? float ?). Donc on renvoyant un void*, on récupère tout type de donnée allouée :)

    • @sylvaing4866
      @sylvaing4866 6 років тому +1

      Bon j'avoue c'est pas encore clair, je manque d'experience je pense. Du coup j'ai construit un systeme d'affichage de debugs pour me reperer quand mes progs plantent. Cela permet d'afficher des message en lançant le prog avec -d ou --debug en argument et cela permet de les afficher avec un effet de tabulation selon la profondeur de la fonction appellée.: Le .c est ici: pastebin.com/zSMSsr9K et le .h: pastebin.com/ELX0XtHp.

    • @formation-video
      @formation-video  6 років тому

      C'est bien, et utile :)

  • @hbx380
    @hbx380 4 роки тому

    Salut merci pour ta vidéo bien sympa et claire. J'ai fait le même code que toi celui du début à 8:00 environ et il me met un :
    main.c:34:18: warning: dereferencing 'void *' pointer
    printf("%d
    ", *pGen);
    ^~~~~
    main.c:34:18: error: invalid use of void expression
    J'utilise un makefile avec les options de compilations suivante :
    CC = gcc
    CFLAGS = -O3 -g -Wall -DEBUG
    CCCOM=$(CC) $(CFLAGS) -std=c17

    • @formation-video
      @formation-video  4 роки тому

      C'est tout à fait normal, j'ai montré la même erreur dans la vidéo justement. Le pointeur pointe sur NULL, il n'y a donc rien à afficher, là où le "%d" attend une valeur entière (et pas NULL) 😉
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ UA-cam (personnel) : ua-cam.com/users/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8

    • @hbx380
      @hbx380 4 роки тому

      @@formation-video Ok merci pour ta réponse.

    • @formation-video
      @formation-video  4 роки тому

      De rien
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ UA-cam (personnel) : ua-cam.com/users/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8

  • @renaudlemagicien
    @renaudlemagicien 3 роки тому

    Salut ! merci pour ton cour, j'ai un petit probleme lorsque que je compile apres avoir fais un pointeur sur fonction (qui renvoies toutes des int donc le generique) j'ai cette erreur de compilation :
    Undefined symbols for architecture x86_64:
    "_gameManager", referenced from:
    _main in main-b90cf4.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    Pourrais tu me donner un coup de pouce ?

  • @samuelaubert3205
    @samuelaubert3205 2 роки тому

    Limpide comme du crystal comme d'habitude. Les tableaux de pointeurs pour tout ceux qui comme moi detestent les couples switch..case pour des menus par exemple.Merci