Langage C : cours + exercices corrigés + TPs + exams
+7
nejla
suneddine
Napoléon
Timon
methodiX
manianis
lamia
11 participants
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 2
Page 1 sur 2 • 1, 2
Langage C : cours + exercices corrigés + TPs + exams
C'est un cours complet avec des exercices corrigés, des TPs corrigés, et des exams:
Enjoy it
Langage C
Enjoy it
lamia- Modérateur
-
Nombre de messages : 1936
Age : 37
Localisation : Tunis
Réputation : 53
Points : 6591
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Merci Lamia. Très active
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Bon faut tenir compte de quelques remarques ennocés par Timon dans ce sujet concernant ce site.
lamia- Modérateur
-
Nombre de messages : 1936
Age : 37
Localisation : Tunis
Réputation : 53
Points : 6591
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Timon a écrit:...
Comme vous le savez, Internet et les librairies regorgent de livres abordant l'apprentissage du langage C. Malheureusement, bon nombre de ces cours/tutoriels sont de mauvaise qualité.
Exemple de mauvais tutoriel :
Langage C de Patrick Trau
Exemple de mauvais livre :
La bible du programmeur de Kris Jamsa et Lars Klander
Par "mauvaise qualité", j'entends méconnaissance du langage (de sa norme) et enseignement à partir de ces mauvaises bases. J'ai souvent l'impression que leur(s) auteur(s) l'ont appris par empirisme. Bien sûr qu'il faut manipuler le langage pour le comprendre mais il ne faut pas s'arrêter à ça si on veut l'utiliser concrètement et surtout si on veut l'enseigner !
Ainsi, on y voit des absurdités qui pourraient être facilement corrigées si l'auteur avait été un peu sérieux :Alors quePatrick Trau a écrit:Fonctions d'entrées/sorties les plus utilisées
[...]
char putchar(char)L'erreur peut sembler minime. Pourtant, c'est une fonction que tout programmeur connaît. Comment peut-on se permettre une telle erreur qui amènera le débutant forcément dans un mur ?La norme (C89) a écrit:4.9.7.9 The putchar function
Synopsis
- Code:
#include
int putchar(int c);
Ce n'est pas la seule erreur, sinon elle serait plus ou moins pardonnable (faute de frappe, copié-collé, distraction ?).
...
lamia- Modérateur
-
Nombre de messages : 1936
Age : 37
Localisation : Tunis
Réputation : 53
Points : 6591
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Je vais profiter du fait que ce sujet soit remonté pour développer ma critique ce "cours". Je vais prendre pour cible ses exercices corrigés et ne lister que ce qui me paraît le plus grave :
Non portabilité du code :
- Inclusion du fichier d'en-tête non standard alloc.h pour pouvoir utiliser malloc(). stdlib.h ne lui suffit pas ?
- Utilisation de la bibliothèque CONIO. Y a-t-il vraiment un intérêt à enseigner les bases du C avec ça ?
Transtypage du retour de malloc() :
Enfin, je rappelle que le vrai prototype de malloc() est :
Bref, il pourrait s'épargner cette peine en écrivant simplement :
Non vérification du retour de malloc() :
La mémoire est limitée et utilisée par d'autres programmes. L'allocation de mémoire peut donc échouer. Dans ce cas, la fonction renvoie NULL.
Utilisation de la fonction gets() :
Cette fonction est très bien... pour les pirates car elle leur ouvre les portes en grand. Il est vrai que sur la plupart des systèmes, il est maintenant plus difficile d'utiliser cette faille mais elle existe quand même.
Et même si on ne considère pas ce problème, il suffit seulement de se rappeler qu'elle ne fait aucun contrôle sur la longueur de la saisie. N'importe quel utilisateur peut faire planter le programme.
Il faut donc lui préférer fgets() qui permet de limiter la longueur de la saisie. Aucun risque de buffer overflow sauf si, bien sûr, vous utilisez mal la fonction.
Le plus étrange est que l'auteur cite cette fonction mais s'obstine pourtant à utiliser gets().
Enfin, utilisation de variables globales dans chacun de ses codes :
Il est important d'utiliser le moins possible les variables globales. En effet, plus le code évolue et plus il est difficile de connaître la valeur des variables globales.
On se retrouve alors avec des fonctions trop dépendantes les unes des autres et un code non (ou difficilement) réutilisable.
Il y a malheureusement d'autres choses qui ne sont pas correctes mais cela me semble suffisant pour vous dissuader de construire vos bases avec ce cours.
Non portabilité du code :
- Inclusion du fichier d'en-tête non standard alloc.h pour pouvoir utiliser malloc(). stdlib.h ne lui suffit pas ?
- Utilisation de la bibliothèque CONIO. Y a-t-il vraiment un intérêt à enseigner les bases du C avec ça ?
Transtypage du retour de malloc() :
Le transtypage ((struct page *)) n'est absolument pas utile et peut être dangereux puisqu'il bâillonnerait le compilateur en cas de non inclusion du fichier stdlib.h.Partrick Trau a écrit:
- Code:
premier=(struct page *)malloc(sizeof(struct page));
Enfin, je rappelle que le vrai prototype de malloc() est :
- Code:
void *malloc(size_t n_bytes);
Bref, il pourrait s'épargner cette peine en écrivant simplement :
- Code:
premier = malloc(sizeof(struct page));
- Code:
premier = malloc(sizeof *premier);
Non vérification du retour de malloc() :
- Code:
premier=(struct page *)malloc(sizeof(struct page));
puts("entrez votre premier entier");
scanf("%d",&premier->val);
La mémoire est limitée et utilisée par d'autres programmes. L'allocation de mémoire peut donc échouer. Dans ce cas, la fonction renvoie NULL.
Utilisation de la fonction gets() :
Cette fonction est très bien... pour les pirates car elle leur ouvre les portes en grand. Il est vrai que sur la plupart des systèmes, il est maintenant plus difficile d'utiliser cette faille mais elle existe quand même.
Et même si on ne considère pas ce problème, il suffit seulement de se rappeler qu'elle ne fait aucun contrôle sur la longueur de la saisie. N'importe quel utilisateur peut faire planter le programme.
Il faut donc lui préférer fgets() qui permet de limiter la longueur de la saisie. Aucun risque de buffer overflow sauf si, bien sûr, vous utilisez mal la fonction.
Le plus étrange est que l'auteur cite cette fonction mais s'obstine pourtant à utiliser gets().
Enfin, utilisation de variables globales dans chacun de ses codes :
Il est important d'utiliser le moins possible les variables globales. En effet, plus le code évolue et plus il est difficile de connaître la valeur des variables globales.
On se retrouve alors avec des fonctions trop dépendantes les unes des autres et un code non (ou difficilement) réutilisable.
Il y a malheureusement d'autres choses qui ne sont pas correctes mais cela me semble suffisant pour vous dissuader de construire vos bases avec ce cours.
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5952
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Bravo pour les remarques pertinentes. Pourtant on nous a toujours conseillé de suivre ce cours. C'est vrai, pour débuter en C, il n'est pas très dangereux de suivre ce cours, puisqu'on ne s'aperçoit pas de ces fautes. Mais ça reste un très bon test pour les connaisseurs du langages C.
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
- Code:
premier = malloc(sizeof *premier);
Je ne suis pas sûr que c'est la meilleure façon pour allouer de l'espace à un pointeur de type (struct page*) !!! Même si le transtypage est implicite, il est préférable à mon avis de le mettre en évidence, même pour avoir un code plus lisible, surtout si on se contente de mettre sizeof *premier au lieu de sizeof(struct page) ...
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
C'est une méthode largement utilisée et qui est la plus maintenable.methodiX a écrit:Je ne suis pas sûr que c'est la meilleure façon pour allouer de l'espace à un pointeur de type (struct page*) !!! Même si le transtypage est implicite, il est préférable à mon avis de le mettre en évidence, même pour avoir un code plus lisible, surtout si on se contente de mettre sizeof *premier au lieu de sizeof(struct page) ...
Le problème du transtypage explicite du retour de malloc() est qu'il peut cacher des erreurs qui sont alors potentiellement dramatiques.
Si stdlib.h n'est pas inclus, malloc() n'est pas déclarée. Cependant, le compilateur peut émettre la supposition que la fonction est définie comme suit :
- Code:
int malloc(int n_bytes);
Cependant, le transtypage indique au compilateur : "Ne dis rien, je sais ce que je fais."
On n'est alors pas averti du problème et le programme rencontre un jour ou un autre un bug qui sera difficile à corriger.
Pour le reste, le transtypage ne doit pas avoir valeur de documentation, seulement de reconversion lorsqu'elle ne peut se faire naturellement. Ce document (en anglais) le démontre.
Revenons à sizeof *premier. premier est de type struct page *. Donc, lorsque ce pointeur pointe sur une adresse valide, *premier est l'élément qu'il pointe. Cet objet est de type struct page.
Le problème, pourrait-on objecter, est que premier ne pointe sur rien de valide avant l'appel de malloc(). Heureusement, la norme dit que l'expression sur laquelle on applique sizeof n'est pas évaluée. On détermine seulement le type de l'expression, d'où :
sizeof(struct page) = sizeof *premier = sizeof *premier++ = sizeof (*premier)++ = sizeof *(struct page *)NULL = ...
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5952
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Vraiment bravo pour la qualité de la discussion. Très intéressante pour ceux qui ont un niveau confirmé en C.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7662
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
malheureusement, ce n'est pas le cas pour moi.nabiL a écrit:Vraiment bravo pour la qualité de la discussion. Très intéressante pour ceux qui ont un niveau confirmé en C.
suneddine- Nombre Réel
-
Nombre de messages : 730
Age : 38
Localisation : tunisie
Réputation : 5
Points : 6112
Date d'inscription : 11/11/2007
Feuille de personnage
Capacité linguistique:
(995/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
mosa a écrit:malheureusement, ce n'est pas le cas pour moi.nabiL a écrit:Vraiment bravo pour la qualité de la discussion. Très intéressante pour ceux qui ont un niveau confirmé en C.
Le problème d'allocation/libération de la mémoire est un sujet trés important. Il n'est pas traité avec précision pour les non informaticiens vu les maux de tête qu'il puisse générer.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Pourtant, la règle est simple : pour chaque allocation sa libération.manianis a écrit:Le problème d'allocation/libération de la mémoire est un sujet trés important. Il n'est pas traité avec précision pour les non informaticiens vu les maux de tête qu'il puisse générer.
Plus sérieusement, lors de l'écriture du Kit du Débutant, je me suis dit qu'il serait intéressant qu'il y ait justement une aide à ce sujet. C'est pourquoi, les fonctions d'allocation/libération sont "enroulées" dans de nouvelles fonctions qui vérifient, dans la mesure du possible, que le programmeur n'a rien fait de bizarre et rien oublié.
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5952
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Timon a écrit:Pourtant, la règle est simple : pour chaque allocation sa libération.
Plus sérieusement, lors de l'écriture du Kit du Débutant, je me suis dit qu'il serait intéressant qu'il y ait justement une aide à ce sujet. C'est pourquoi, les fonctions d'allocation/libération sont "enroulées" dans de nouvelles fonctions qui vérifient, dans la mesure du possible, que le programmeur n'a rien fait de bizarre et rien oublié.
Oui, justement, c'est trés simple à dire mais les exceptions sont multiples. Les bugs font que parfois des fonctions standard ne réagissent pas de la manière attendue et qu'il génèrent des problèmes de mémoire. J'ai eu par exemple ce type de problèmes avec quelques fonctions standard sous Visual C++, version 6.
Aussi, les problèmes d'allocations et de libération de mémoire ne sont pas toujours la faute du programmeur mais aussi peuvent provenir d'une faute de conception.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
C'est peu probable. Les compilateurs conformes sont rarement sujets à des bugs. Si je me souviens bien, une étude dit que, quand un programme a un bug, il n'y a que 5% de risques que cela provienne du compilateur.manianis a écrit:Aussi, les problèmes d'allocations et de libération de mémoire ne sont pas toujours la faute du programmeur mais aussi peuvent provenir d'une faute de conception.
A partir de là, on peut totalement faire confiance aux fonctions d'allocation mémoire à partir du moment où on n'oublie pas de vérifier leur retour.
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5952
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Je crois comprendre ce que vous vouliez dire : lorsqu'on passe des paramètres que la fonction ne "s'attend" pas à avoir, elle peut planter (ou faire autre chose).manianis a écrit:Oui, justement, c'est trés simple à dire mais les exceptions sont multiples. Les bugs font que parfois des fonctions standard ne réagissent pas de la manière attendue et qu'il génèrent des problèmes de mémoire.
C'est normal, c'est un comportement indéterminé défini par la norme. En effet, les implémenteurs de compilateurs ne sont pas obligés de gérer les cas comme fopen(NULL, NULL), malloc(0), strlen(NULL), isdigit(-20) (sauf si EOF = -20), etc.
En appliquant les principes de la programmation défensive, on arrive assez facilement à éviter ce genre de cas.
Dernière édition par le Sam 2 Fév - 16:13, édité 1 fois
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5952
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Timon:
à votre avis, pourquoi fopen(NULL, NULL)n'est pas géré par certains compilateurs? Peut-tu présenter en quelques mots la programmation défensive?
à votre avis, pourquoi fopen(NULL, NULL)n'est pas géré par certains compilateurs? Peut-tu présenter en quelques mots la programmation défensive?
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7662
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
C'est simple : on demande à ouvrir "rien" en mode "rien". Ca n'a absolument aucun sens.nabiL a écrit:Timon:
à votre avis, pourquoi fopen(NULL, NULL)n'est pas géré par certains compilateurs?
Comme les fonctions standard sont beaucoup utilisées, le Comité a décidé de ne pas forcer les implémenteurs de vérifier les paramètres. Cela permet à long terme une augmentation des performances.
fopen() tente alors de déréférencer ses paramètres qui sont NULL. Le déréférencement de NULL provoquant un comportement indéterminé, la stabilité du programme n'est plus.
Elle consiste à vérifier que chaque donnée est, à tout instant, parfaitement contrôlée et que le programme est capable de réagir face à n'importe quelle situation étrange.Peut-tu présenter en quelques mots la programmation défensive?
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5952
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Merci pour la réponse Timon.
En fait, que veut dire exactement :
Il y a les codes retour non? 0 si aucune erreur sinon le code de l'erreur.
C'est vrai il y a des fonctions qui retournent des valeurs entières non nulles par exemple "descripteur d'un fichier" ... dans ce cas, il faut gérer les erreurs autrement à mon avis.
J'espère que je me suis bien exprimé (je ne suis pas informaticien )
En fait, que veut dire exactement :
En effet, les implémenteurs de compilateurs ne sont pas obligés de gérer les cas comme fopen(NULL, NULL), malloc(0),
Il y a les codes retour non? 0 si aucune erreur sinon le code de l'erreur.
C'est vrai il y a des fonctions qui retournent des valeurs entières non nulles par exemple "descripteur d'un fichier" ... dans ce cas, il faut gérer les erreurs autrement à mon avis.
J'espère que je me suis bien exprimé (je ne suis pas informaticien )
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Timon :
Si les valeurs passées aux dites fonctions possèdent un type correct ou un type qui lui est compatible alors la ce n'est pas la tache du compilateur de vérifier la validité de ces valeurs.
Il n'est pas logique de faire des appels du type fopen(NULL, NULL). Le programmeur a commis une faute de conception. Je ne sais pas si peut être dé-référencer mais je sais qu'il a été déclaré comme un define. Et à ce que je sais il faudra pour le redéfinir faire appel à undef.
Si les valeurs passées aux dites fonctions possèdent un type correct ou un type qui lui est compatible alors la ce n'est pas la tache du compilateur de vérifier la validité de ces valeurs.
Il n'est pas logique de faire des appels du type fopen(NULL, NULL). Le programmeur a commis une faute de conception. Je ne sais pas si peut être dé-référencer mais je sais qu'il a été déclaré comme un define. Et à ce que je sais il faudra pour le redéfinir faire appel à undef.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
manianis a écrit:Timon :
Si les valeurs passées aux dites fonctions possèdent un type correct ou un type qui lui est compatible alors la ce n'est pas la tache du compilateur de vérifier la validité de ces valeurs.
Il n'est pas logique de faire des appels du type fopen(NULL, NULL). Le programmeur a commis une faute de conception. Je ne sais pas si peut être dé-référencer mais je sais qu'il a été déclaré comme un define. Et à ce que je sais il faudra pour le redéfinir faire appel à undef.
Je n'ai pas bien saisi
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Il y a des codes d'erreurs mais ils ne traitent pas forcément tous les cas. Prenons strtol() :methodiX a écrit:Il y a les codes retour non? 0 si aucune erreur sinon le code de l'erreur.
Si on écrit strtol(s_chaine, NULL, 10) avec s_chaine, chaîne valide, quelque soit son contenu, son comportement est parfaitement défini et LONG_MIN, LONG_MAX et 0 peuvent plus ou moins servir de codes d'erreur.
Si s_chaine est NULL, il n'y a pas de code d'erreur, seulement un comportement indéterminé.
Ces fonctions renvoient -1 en cas d'erreur sauf paramètre NULL.C'est vrai il y a des fonctions qui retournent des valeurs entières non nulles par exemple "descripteur d'un fichier" ... dans ce cas, il faut gérer les erreurs autrement à mon avis.
En effet mais ça peut arriver et on doit bien savoir ce qu'il passera dans ce cas : à savoir, n'importe quoi.manianis a écrit:Il n'est pas logique de faire des appels du type fopen(NULL, NULL). Le programmeur a commis une faute de conception.
Que voulez-vous dire ?Je ne sais pas si peut être dé-référencer mais je sais qu'il a été déclaré comme un define. Et à ce que je sais il faudra pour le redéfinir faire appel à undef.
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5952
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Timon: Je ne sais pas si NULL peut être dé-référencé mais je sais qu'il a été
déclaré comme un define. Et à ce que je sais il faudra pour le
redéfinir faire appel à undef.
methodiX: les fichiers #include sont appelées des fichiers d'entêtes et elles contiennent uniquement des prototypes de fonctions (càd la déclaration de la fonction sans implémentation). Ces prototypes servent à déterminer le type des arguments passées à une fonction. Et elles permettent au compilateur de déterminer si l'utilisateur a passé les bons arguments.
déclaré comme un define. Et à ce que je sais il faudra pour le
redéfinir faire appel à undef.
methodiX: les fichiers #include sont appelées des fichiers d'entêtes et elles contiennent uniquement des prototypes de fonctions (càd la déclaration de la fonction sans implémentation). Ces prototypes servent à déterminer le type des arguments passées à une fonction. Et elles permettent au compilateur de déterminer si l'utilisateur a passé les bons arguments.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Langage C : cours + exercices corrigés + TPs + exams
Quel serait l'intérêt à la redéfinir avec la directive #define ? D'ailleurs, il me semble que la norme indique bien que la redéfinition des macros standard n'est pas légale.manianis a écrit:Timon: Je ne sais pas si NULL peut être dé-référencé mais je sais qu'il a été
déclaré comme un define. Et à ce que je sais il faudra pour le
redéfinir faire appel à undef.
Timon- Entier Naturel
-
Nombre de messages : 61
Localisation : France
Réputation : 0
Points : 5952
Date d'inscription : 14/01/2008
Feuille de personnage
Capacité linguistique:
(1000/1000)
Page 1 sur 2 • 1, 2
Sujets similaires
» Cours + Exercices de C/C++
» Cours et exercices corrigés en Pascal
» Ebook: Exercices corrigés + synthèse de cours en C++
» Plusieurs exercices d'examens Corrigés
» Révision de la récursivité: exercices corrigés et méthodes
» Cours et exercices corrigés en Pascal
» Ebook: Exercices corrigés + synthèse de cours en C++
» Plusieurs exercices d'examens Corrigés
» Révision de la récursivité: exercices corrigés et méthodes
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|