TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : 1 2 Suivante | |||
| Pseudo | Commentaire | ||
|---|---|---|---|
| Page : 1 2 Suivante | |||
mleg
|
# Posté le 02/03/2006 à 00:16:50 - Ce membre a mis la note : 17 | ||
|
None Groupe : Membres |
Comme d'habitude, très bon . Par contre, tu ne détaille pas trop le passage pointeur/tableau quand tu alloue de la mémoire pour le tableau. Ca peut en décourager.
N'empêche, premier chapitre que je lis avant la news, faut dire que je l'attendais .
Enfin voilà donc je vais m'attaquer au tp .
|
||
Djeepy46234
|
# Posté le 02/03/2006 à 03:23:32 - Ce membre n'a pas mis de note | ||
L'épilepsie +1 (guesswhy?)![]() Groupe : Membres |
Code : C++ int main(int argc, char *argv[])
{ long* memoireAllouee = NULL; memoireAllouee = malloc(sizeof(long)); if (memoireAllouee == NULL) // Si l'allocation a échoué { exit(0); // On arrête immédiatement le programme } // On peut continuer le programme normalement sinon. return 0; } Ça ne fonctione pas sous Code::blocks : error: invalid conversion from 'void*' to 'long int*'
|
||
Antartika
|
# Posté le 02/03/2006 à 09:21:30 - Ce membre n'a pas mis de note | ||
|
Groupe : Membres |
Euh tu n'avais pas dit que tu abandonnais le system("pause") ?
Y'en a un au début du tuto
|
||
rz0
|
# Posté le 02/03/2006 à 09:46:54 - Ce membre n'a pas mis de note | ||
meuh![]() Groupe : Membres |
Djeepy46234 > Quand on compile du C comme si c'était du C++ faut pas s'étonner...
|
||
M@teo21
|
# Posté le 02/03/2006 à 10:39:50 - Ce membre n'a pas mis de note | ||
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Je rappelle que c'est un cours de C, pas de C++.
Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
||
Hells_Dark
|
# Posté le 02/03/2006 à 14:17:25 - Ce membre n'a pas mis de note | ||
![]() Groupe : Membres |
Citation : Cours Code : C
sizeof(int)
A la compilation, cela sera remplacé par un nombre : le nombre d'octets que prend char en mémoire Char ? C'est pas int plutot ?
En tout cas, merci pour ce chapitre. C'est justement là que j'étais rendu dans mon apprentissage (j'apprend sur différents pdf, en cours et ..ici ;)) et j'avoue ne pas avoir tout capté (j'ai pas encore lu ton cours en entier, c'est pour ça ).
|
||
M@teo21
|
# Posté le 02/03/2006 à 14:22:23 - Ce membre n'a pas mis de note | ||
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Merci c'est corrigé
Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
||
louisclem
|
# Posté le 02/03/2006 à 18:20:13 - Ce membre a mis la note : 15 | ||
J'aime le![]() Groupe : Membres |
J'ai pleins de petits commentaires sur certains passages que je trouve un peu mal dits.
D'abord, dans l'affichage des sizeof. Comme sizeof retourne un size_t et qu'on ne connaît pas son type exact, on ne peut pas l'afficher, à moins de le caster avant. J'ai testé, et quand on fait rentrer une trop grande valeur dans un size_t et qu'on l'affiche avec %ld on obitent un petit résultat négatif (testé sur Linux / x86). Le passage d'information qui parle du long int est légèrement confus aussi : "En fait, le type "long" est équivalent à un type appelé "long int", qui est ici équivalent au type... "int". Bref, ça fait beaucoup de noms différents pour pas grand-chose au final" laisse penser que long, int et long int sont équivalents, alors que la différence est simplement que long est un "raccourci" de long int, et que souvent les deux types ont la même taille. Après les free (), il n'est pas conseillé aussi, par sécurité, de mettre le pointeur à NULL ? Cela permet déviter certains erreurs. Dernière question du QCM, c'est un peu confus la réponse : cela ne réserve pas forcément un tableau mais une zone de la taille de 25 int. Cependant on l'utilise pas forcément comme un tableau. Puis, dernière remarque, mais positive cette fois : sous la déclaration d'un tableau avec une variable, il y a écrit (Notez : ce code marche peut-être sur certains compilateurs mais uniquement dans des cas précis, il est recommandé de ne pas l'utiliser !). Je préfère voir cela que de dire que ça existe que en C99 et que tu nous apprends le C89, alors que tu mets des commentaies //
Donc voilà, j'étais d'humeur à chercher la petit bête aujourd'hui et j'ai comme l'impression que je vais me faire tapper dessus
|
||
ddx39
|
# Posté le 03/03/2006 à 12:04:32 - Ce membre a mis la note : 14 | ||
![]() Groupe : Membres |
Dites moi si je raconte n'importe quoi
Citation : M@teo21 Explications : Notre tableau d'int occupe 10 * 4 = 40 octets en mémoire. Il se trouve à l'adresse 15060. Il va donc occuper de la place jusqu'à l'adresse 15060 + 40 = 15100 ! La prochaine adresse utilisable en mémoire sera donc l'adresse 15100
Bah non ^^, la prochaine adresse utilisable sera 15101 (puisque 15100 est déjà occupée)
![]() |
||
M@teo21
|
# Posté le 03/03/2006 à 13:28:42 - Ce membre n'a pas mis de note | ||
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Bah oui tu dis n'importe quoi
Si tu comptes à partir de 15060 et que tu prends 40 cases (y compris la 15060), la première case libre sera belle et bien la numéro 15100. Pour faire plus simple, supposons qu'on alloue 10 cases. La prochaine libre sera 15070. En effet, on allouera les cases : 15060 - 15061 - 15062 - ... - 15069 Si tu comptes bien, ça fait 10 Il ne faut pas oublier de compter le 0ème élément
Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
||
ddx39
|
# Posté le 03/03/2006 à 13:38:53 - Ce membre a mis la note : 14 | ||
![]() Groupe : Membres |
Oki oki merci pour l'explication
![]() |
||
Asgeir
|
# Posté le 03/03/2006 à 16:53:45 - Ce membre a mis la note : 17 | ||
Canardesque![]() Groupe : Bannis |
Très bon tuto m@t
Code : C memoireAllouee = malloc(sizeof(long));
if (memoireAllouee == NULL) // Si l'allocation a échoué { exit(0); // On arrête immédiatement le programme } A noter l'utilisation de la fonction assert dans les systèmes GNU/Linux (c.f. advanced linux programming)
|
||
rz0
|
# Posté le 03/03/2006 à 18:17:31 - Ce membre n'a pas mis de note | ||
meuh![]() Groupe : Membres |
assert c'est du C mais c'est pas vraiment fait pour ça (enfin, d'après moi). C'est fait pour les conditions normalement impossibles, pas les erreurs.
|
||
Shandra
|
# Posté le 18/06/2006 à 20:21:32 - Ce membre n'a pas mis de note | ||
|
Groupe : Membres |
Bonjours tout le monde
J'ai rencontré la même problème, lors de la compilation Dev c++ se plante car il ne parvient pas a passer d'un void* à un int long. La ligne qui fait se planter la compilation est donc la suivante : ageAmis = malloc(nombreDAmis * sizeof(long)); Une explication ? Merci d'avance |
||
0v3rb1t
|
# Posté le 11/12/2006 à 12:44:17 - Ce membre a mis la note : 17 | ||
|
C et C++, pas C/C++ Groupe : Bannis |
Pour aller plus loin avec calloc() et realloc() c'est ICI
SMART_TELNET(projet à reprendre) [C]Tutoriel ANSI [C]Bien programmer en C -ed- [C]Développez [C]Wikibooks [C]Sockets [C-python]GTK+ [C-algo]France-IOI [C]Algorithmique |
||
damoun53
|
# Posté le 16/02/2007 à 14:28:33 - Ce membre a mis la note : 17 | ||
|
Groupe : Membres |
C'est vraiment un cours extraordinaire et bien expliqué.
Il y a quelques passages difficiles, mais je pense pas que sa vienne de matéo21, mais tout simplement du language de programation qui n'est pas de la tarte quand même, il faut le dire ! Pour moi, ça va car j'ai assez de facilité à apprendre. Il faut dire que je suis rendu à l'ouverture et le fermeture d'un fichier grace à des fonctions en 1 mois. Je pense que c'est raisonnable. J'ai bloqué un peu sur les pointeurs et sur les structures et les fonctions. Mais maintenant, ça av beaucoup mieux. Sauf que je suis bloquer à l'ouverture et le fermenture d'un fichier grace à des fonctions car matéo21, tu ne donne que les prototypes de ses fameuses fonctions !! Et je n'arrive pas à deviner ce qu'elle contiennent exactement ! D'ailleurs, j'aimerais bien savoir !
|
||
Sepheryn
|
# Posté le 08/03/2007 à 16:22:41 - Ce membre a mis la note : 20 | ||
|
Groupe : Membres |
Je mets la meilleure des notes pour ce cours, qui, avec les autres du même auteur, m'ont permis de me lancer dans le monde dangereux du C/C++
Sinon j'ai vu que certains avaient des problèmes de typage pour le malloc, du fait qu'ils utilisaient C++, j'ai cherché sur notre ami google et j'en ai tiré ça: Citation int *pointeur = NULL;
int index = 5; pointeur = (int *) malloc(index * sizeof(int)); En fait en C++ il faut indiquer le changement de type en rajoutant le type entre parenthèses devant l'expression, ici le type est un pointeur sur int. Si j'ai bien compris, ça devrait marcher, en tout cas ça a résolu mon problème de typage. Avant même d'être conçu, un programme est déjà obsolète... |
||
Eridan
|
# Posté le 15/03/2007 à 16:12:59 - Ce membre n'a pas mis de note | ||
|
Groupe : Membres |
Excellent tuto. Ca m'a permi de réactualiser sans problèmes quelques notions que j'avais oublié
Par contre, un petit détail m'a attiré l'oeil (et comme personne n'en a parlé ici je pense pas faire doublon, par contre je peux me tromper) : vers la fin du tuto on trouve les lignes de codes suivantes : Citation : M@teo21 ageAmis = malloc(nombreDAmis * sizeof(long)); // On alloue de la mémoire pour le tableau et un peu plus bas : Citation : M@teo21 scanf("%ld", &ageAmis[i]); Et dans le QCM : Citation : M@teo21 pointeur = malloc(sizeof(long)); avec Citation : M@teo21 scanf("%ld", &pointeur); Et dans la réponse du QCM, il est précisé que le "&" est de trop puisque celà donne l'adresse où est stocké le pointeur au lieu de donner l'adresse où est stockée la donnée à afficher. Or ageAmis est aussi un pointeur (qui stocke l'adresse du premier élément du tabeau) crée de la même façon que dans l'exemple du QCM. Il ne devrait donc pas y avoir de "&" dans le scanf non? Ou alors j'ai loupé quelque chose?
|
||
Sepheryn
|
# Posté le 05/04/2007 à 14:11:41 - Ce membre a mis la note : 20 | ||
|
Groupe : Membres |
En fait je crois qu'il y a une différence subtile:
ageAmis -> pointeur sur le premier élément du tableau ageAmis[i] -> valeur du i-éme élément du tableau &ageAmis[i] -> pointeur sur le i-éme élément du tableau Donc le cours me paraît correct. En fait rajouter le [i] après le pointeur ça devient une variable normale, ageAmis[i] est la variable qui contient le i-éme élément du tableau. Après j'peux me tromper, c'est pas rare!
Avant même d'être conçu, un programme est déjà obsolète... |
||
Reign
|
# Posté le 19/05/2007 à 13:30:59 - Ce membre n'a pas mis de note | ||
|
I'm your master Groupe : Membres |
J'ai bien aimé le tuto, mais si tu veux être totalement complet sur l'alloc mémoire, es-ce que tu ne ferais pas un petit quelque chose sur le realloc ? plus qu'utile il me semble. Sinon c'est bien fait ! Toujours très utile quand on a un petit trou de mémoire
Autre chose, je pense qu'il serait utile de noté que lorsqu'on fait un alloc d'un double pointeur il faut free d'abord chaque ligne puis ensuite chaque colonne. :-) bravo sinon ! impec !
|
||
empire1601
|
# Posté le 22/05/2007 à 20:04:31 - Ce membre a mis la note : 19 | ||
Les maths rytment ils la vie ?![]() Groupe : Membres |
Très bon tutorial comme tout les autres.
Seul petit défaut : j'aurais aimé que le code soit aussi inscrit pour les utilisateurs de Dev C++ et code blocks car avec le code en C ça ne marche pas.
Sinon merci à l'auteur pour son magnifique tuto très complet et à Sepheryn pour son aide pour les utilisateurs du C ++
Je tien aussi à préciser qu'il existe aussi 2 fonction pour l'allocation de mémoire dans le C++ : new et delete. A ce jour je n'ai toujour pas compris comment les utiliser. Code : C++
|
||
gd*T
|
# Posté le 15/06/2007 à 10:41:28 - Ce membre a mis la note : 17 | ||
|
Groupe : Membres |
"Je suis beau" à raison, et ça ne fonctionne pas sous Dev-C++ aussi d'ailleurs ...
" error: invalid conversion from 'void*' to 'long int*' " ?
[Edit] " C'est un cours de C, pas de C ++ " Au temps pour moi ..., merci =) "...that place, where the wave finaly broke, and rolled back..." |
||
Zzz C
|
# Posté le 25/08/2007 à 12:27:17 - Ce membre a mis la note : 20 | ||
|
Groupe : Membres |
Bravo pour ce tuto M@teo ! Je vais mettre un petit 20/20 parce que je trouve qu'il est très bien éxpliqué ( j'ai tout compris d'un seul coup ).
|
||
mezcalio
|
# Posté le 18/09/2007 à 15:47:51 - Ce membre a mis la note : 19 | ||
pfffffff...![]() Groupe : Membres |
Trés bon tuto comme d'hab... J'ai en revanche une petite remarque à faire : M@teo nous donne 2 exemples d'allocation de mémoire (1 dynamique et 1 automatique) : - Allocation de mémoire dynamique Code : C - Afficher / masquer les numéros de ligne
- Allocation de mémoire automatique Code : C - Afficher / masquer les numéros de ligne
Il est dit dans le tuto qu'au final les 2 méthodes reviennent "exactement au même". Il me semble que ce n'est pas tout à fait vrai. Dans le premier exemple (allocation dynamique) on est obligé de déclarer un pointeur sur long (via une allocation automatique). Ce pointeur va donc occuper 4 octets dans la mémoire, en plus des 4 octets que l'on aura alloué dynamiquement. Au final, on aura donc occupé 4 + 4 = 8 octets en mémoire, contre 4 octets seulement pour le deuxième exemple (allocation automatique). Bon je sais, je suis tatillon , faites comme si je n'avais rien dit (sauf si j'ai tort, dans ce cas vous pouvez m'allumer).EDIT : Sinon, si vous voulez m'encenser, j'aime bien aussi .
|
||
charox
|
# Posté le 20/09/2007 à 19:49:44 - Ce membre a mis la note : 20 | ||
|
Groupe : Membres |
pfff arrete d'expliquer tes cours aussi bien parceque sinon tout le monde va devenir programmeur ![]() Et dire que mon frere qui est a l'isen comprend pas des trucs en info et pour trouver sa solution il a du venir sur le SdZ ![]() Tu devrais ouvrir ta propre école d'info carrément et faire payer les cours que tu donnes
-200 invitations Gmail (mp si vous en voulez )
-Ah oui au fait MERCI M@THEO !!!!! xhtml/css, php, c(++) t'es le meilleur (enfin peut-etre pas mais quand meme )!!
Citation : Devises Shadock Il vaut mieux mobiliser son intelligence sur des conneries que sa connerie sur des choses intelligentes ! |
||
malakian
|
# Posté le 23/09/2007 à 06:04:35 - Ce membre n'a pas mis de note | ||
is ... Holala![]() Groupe : Membres |
Un grand merci matteo . J'était arrivé sur ce site je ne savait mem pas c'était quoi la programation .Grace a oti je sais faire un petit programme ! je n'est pas encore finin le cours et j'espere ne jamais le finir tellement j'pprend de chose. Encore merci
Jacque Prevert Dans chaque église il y a quelque chose qui cloche. |
||
Dagrut
|
# Posté le 28/09/2007 à 17:13:20 - Ce membre a mis la note : 19 | ||
Be API! ^_^![]() Groupe : Membres |
Trés bon tuto (d'ailleurs ça en deviens lassant )Il manque juste un petit chose : Code : C - Afficher / masquer les numéros de ligne
À préciser... J'ai été très étonné quand j'ai eu ce petit problème et hereusement que d'aimables personnes m'ont aidées sur l'IRC Xchat! Ps: la solution est de faire un pointeur sur pointeur à l'initialisation : Code : C - Afficher / masquer les numéros de ligne
Édit: j'ai essayé − par inadvertance, et j'aurais du me relire, mais bon − une sorte de : Code : C - Afficher / masquer les numéros de ligne
J'ai eu chaud, mais heureusement, le programme n'à pas eu le temps de prendre tous mes 1000Mo de Ram! Ça fait quand même peur, les fenêtres qui ne réagissent plus et qui se grisent quand on clique dessus …
Racketiciel - Langage SMS Lien cassé >> MP! Mes programmes et mes circuits TMN/TMNF << Donnez votre avis! Le pédalo c'est du passé. État jabber : ![]() Adresse de test (Pour les spams). Ne pas envoyer de message! ofguiauzomxumwcaysqx@yahoo.fr |
||
john_sk8er
|
# Posté le 05/01/2008 à 23:17:34 - Ce membre a mis la note : 20 | ||
|
Groupe : Membres |
Très bien expliqué comme les autres tutos Je donne la meilleure note pour ceux que sa ne fonctionne pas sur Code::Blocks, moi j'utilise ce programme et ça fonctionne très bien il faut seulement changer au début c++ source en c source dans file option pour celui qui a fait la boucle infinie, j'ai testé et j'ai laissé tourner pour voir le resultat finalement la mémoire na pas été toute utilisée et seulement 50 mo restait dans la ram a comparé a 3go dans la mémoire virtuelle (j'ai configuré a 4go dans le fichier de pagination) comme je disait: un gros bravo a m@teo pour ses cours, j'ai commencé sans rien connaitre et maintenant, à peine 1 mois après, je peut faire des programmes simple et je suis rendu a la partie 3 avec les évènements [20/20]
|
||
JeMs95
|
# Posté le 30/01/2008 à 17:20:15 - Ce membre n'a pas mis de note | ||
|
Groupe : Membres |
Bonjour, ce tuto sur l'allocation dynamique est assez bon, facil à comprendre. | ||
Vinoo
|
# Posté le 14/03/2008 à 14:31:35 - Ce membre a mis la note : 20 | ||
|
Keep Cool. Groupe : Membres |
20/20 sans hésiter! Comment ça "un chapitre assez difficile" ? Au contraire, moi je pense que c'était vraiment "le moment détente" de cette partie du cours. Il suffit en effet de comprendre les pointeurs (c'est pas vraiment la mer à boire non plus) et le reste rentre tout seul! Non franchement Mateo, tes cours sont tellement bien expliqués que pour nous c'est limpide tu t'en rends pas compte à la fin! Bien sûr, il faut que nous aussi on fasse parfois quelques efforts si on veut assimiler.
|
||
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
58 Zéros connectés |
8 requêtes |
0.0582s (0.0388s)
