3 peutite question en C - C - Programmation
Marsh Posté le 11-02-2006 à 15:22:12
1. il faut faire des allocations dynamiques
2. avec l'opérateur unaire !
3. en C, il n'y a pas de vrai booléen. Le 0 vaut false et toutes les autres valeurs sont true
Marsh Posté le 11-02-2006 à 15:34:55
ReplyMarsh Posté le 11-02-2006 à 15:41:45
_darkalt3_ a écrit : Faudrait aussi voir à apprendre le français |
c'est vrai que ca pourrait s'avérer utile
Marsh Posté le 11-02-2006 à 15:48:00
[quotemsg=1303479,2,274546]1. il faut faire des allocations dynamiques
coment ça des allocations dynamiques
( le FR ! j'écri rapidemen pour accélerer )
mérci pour l'aide coméme
Marsh Posté le 11-02-2006 à 15:49:37
olivier318 a écrit : [quotemsg=1303479,2,274546] |
oui mais non, ici c'est pas un portable. si tu ne veux pas que je ferme ce topic comme j'ai fermé ton précédent, je te demanderais d'écrire correctement
Marsh Posté le 11-02-2006 à 15:58:48
olivier318 a écrit : |
cherche dans ton bouquin ou des tutos, je vais pas tout t'expliquer ici
Marsh Posté le 11-02-2006 à 17:56:42
ritzle a écrit : 3. en C, il n'y a pas de vrai booléen. Le 0 vaut false et toutes les autres valeurs sont true |
bool appartient à quel langage ??
Marsh Posté le 11-02-2006 à 18:11:28
Il y a _Bool en C99, qui avec l'inclusion de la stdbool.h devient bool.
Marsh Posté le 11-02-2006 à 19:56:11
allocation dyn:
int tab[];
et apres la taille de ton tab varie automatiquement selon que tu y ajute des elements.
Marsh Posté le 11-02-2006 à 20:32:33
mbarekh a écrit : allocation dyn: |
NON NON ET NON
Code :
|
Marsh Posté le 11-02-2006 à 20:34:26
mbarekh a écrit : allocation dyn: |
je quote pour la postérité
Marsh Posté le 12-02-2006 à 16:36:08
+10000
mbarekh a écrit : allocation dyn: |
Il n'y a ni de vecteur ni d'array list en c !!!!
Essaye de déclarer un tableau de cette façon, je pense que le compilateur va t'insulter...
Pour info un tableau s'utilise de la façon suivante :
Définition : (pour un tableau de int comme dans ton exemple)
Code :
|
TAILLE étant le nombre de cases que tu peux avoir dans ton tableau (le nombre de cases ne peux pas varier !!!), il peut sagir d'une marco constante.
Utilisation :
Code :
|
0 =< INDEX < TAILLE
Pour ce qui est de l'allocation :
google ->
stdlib.h
malloc()
calloc()
realloc()
...
Marsh Posté le 12-02-2006 à 17:59:15
Joel F a écrit : NON NON ET NON
|
et mieux encore, pour plus de modularité
Code :
|
parce que la taille d'un objet pointé par monTab (si ce n'est pas un void *) c'est avant tout 'sizeof *monTab'
Marsh Posté le 12-02-2006 à 18:11:26
skelter a écrit : et mieux encore, pour plus de modularité
|
Pas mal, c'est de mieux en mieux.
Qui a parlé d'objet, c'est du C y a pas de POO là dedans !!!!
Puis le "monTab = malloc( taille * sizeof *monTab )" sa c'est de l'art !!!
Non mais des fois faudrait penser à ouvrir un bouquin de C !!!
Mais bien jouè skelter, tu m'a eut, je pensais pas que c'était possible de poster des trucs pareils.
Impressionant !
-> Edit :
Je viens de trouver sa quelques topics plus bas
mdr
Marsh Posté le 12-02-2006 à 18:35:02
Citation : Qui a parlé d'objet, c'est du C y a pas de POO là dedans !!!! |
la question c'est qui a parlé de POO -> toi
Citation : Non mais des fois faudrait penser à ouvrir un bouquin de C !!! |
prete moi le tien
Citation : Mais bien jouè skelter, tu m'a eut, je pensais pas que c'était possible de poster des trucs pareils. |
moi non plus je pensais pas, d'ailleur je quote
pj_crepes a écrit : Pas mal, c'est de mieux en mieux. |
edit: c'est trop fort, je quote un extrait du site d'ou vien ton image
http://mapage.noos.fr/emdel/notes.htm#malloc
Citation : Lorsqu'il s'agit d'un pointeur typé, il existe une technique alternative qui consiste à utiliser la taille d'un élément pointé par ce pointeur :
|
Marsh Posté le 12-02-2006 à 18:43:37
Citation : la question c'est qui a parlé de POO -> toi |
Ok, POO = "Programmation Orientée Objet" -> à partir du moment ou tu parles d'ojet c'est de la POO.
Voici ce que tu as mis dans ton premier post :
Citation : parce que la taille d'un objet pointé par monTab (si ce n'est pas un void *) c'est avant tout 'sizeof *monTab' |
C'est moi qui ait parlé d'objet ?
Citation : prete moi le tien |
Ha parce que tu n'en as pas, le problème doit être là.
Citation : moi non plus je pensais pas, d'ailleur je quote |
Dans ce cas fait toi plaisir, mais j'ai toujours pas vu l'intérêt du quote...
Marsh Posté le 12-02-2006 à 18:53:16
Citation : edit: c'est trop fort, je quote un extrait du site d'ou vien ton image |
C'est vrai, alors pour répondre à sa.
Déjà la différence entre ton code et sa c'est que dans l'exemple du site c'est casté (ce qui fait que sa fonctionne).
Essaye de faire un printf() de sizeof(*p) et autre avec sizeof((int)*p).
Cependant je trouve cela absolument sans intérêt et pas propre du tout.
Et en plus c'est source d'erreurs, ton post en est la preuve...
Marsh Posté le 12-02-2006 à 18:55:08
Citation : à partir du moment ou tu parles d'ojet c'est de la POO |
on n'a pas fini
http://www.google.fr/search?hl=fr& [...] cher&meta=
Citation : |
explique en quoi ce code
Code :
|
est une absurdité
Marsh Posté le 12-02-2006 à 18:58:00
pj_crepes a écrit :
|
je confirmes, achete toi un bouquin sur le langage C, et j'ai bien précisé si le pointeur n'est pas un pointeur void (comme c'est précisé sur le site d'Emmanuel, si le pointeur est typé)
Marsh Posté le 12-02-2006 à 19:00:00
Citation : on n'a pas fini |
Certes, mais on est dans la section programmation.
Citation : explique en quoi ce code est une absurdité |
Bin c'est simple, tu demandes la taille d'une zone mémoire dont l'allocation mémoire n'a pas encore été faite puisque le coeur du sujet est le malloc.
Marsh Posté le 12-02-2006 à 19:02:23
parce que en plus t'u n'as pas compris ce que retourne sizeof, t'es au courant qu'une expression 'sizeof truc' est résolu statiquement ?
Citation : Certes, mais on est dans la section programmation. |
et alors, c'est pas parce-que je dis objet que je parle forcement de POO, c'est une notion assez abstraite
Marsh Posté le 12-02-2006 à 19:04:07
skelter a écrit : parce que en plus t'u n'as pas compris ce que retourne sizeof, t'es au courant qu'une expression 'sizeof truc' est résolu statiquement ? |
cad ?
par rapport à quoi ?
Marsh Posté le 12-02-2006 à 19:13:54
Bin ton compilateur a intérêt à être gentil parce que sous gcc 4.0 (avec les options -W -Wall) -> Warning.
C'est de a bonne technique de bourrin, qui n'a aucun intérêt à part compliquer le code.
Marsh Posté le 12-02-2006 à 19:32:17
pj_crepes a écrit : Bin ton compilateur a intérêt à être gentil parce que sous gcc 4.0 (avec les options -W -Wall) -> Warning. |
l'interet c'est la modularité, et faut vraiment etre maso pour se privé de ce genre d'astuce avec le C
Code :
|
en admettant que sizeof(short) < sizeof(int), si je fais cette modification
Code :
|
en oubliant de modifier le (ou les) appel de malloc correspondant ca fais boum
pour le warning, ca te le fait meme en '-ansi', tu peux l'afficher ?
Marsh Posté le 12-02-2006 à 21:56:44
Je me pose bien la question de savoir pourquoi tous les deux "Skelter" et "PJ_crepes" essayent de faire une sorte de chalenge qui a mon avis ne repond pas à question initialement poseée?
Marsh Posté le 12-02-2006 à 23:51:08
les e-penis tout ça
PJ_crepes doit avoir un script perl qui scrite les forum pr voir qui poste le mot "objet" pr repondre d'un psot avec HA LA POO FFS
Marsh Posté le 13-02-2006 à 14:00:48
je ne vois pas l'intêret de ce Bla Bla ....
mais merci comem.........................................
Marsh Posté le 14-02-2006 à 12:58:02
mbarekh a écrit : allocation dyn:
|
T'es sûr que tu parles de C ? Parce qu'en C, c'est absolument faux.
Marsh Posté le 14-02-2006 à 13:03:56
pj_crepes a écrit : Pas mal, c'est de mieux en mieux. |
Un objet est une variable. Le C est un langage orienté fonction, mais il manipule quand même des objets. D'autres langages sont orientés objets, mais ils manipulent aussi des fonctions. Il faut se renseigner avant de dire n'importe quoi.
Puis le "monTab = malloc( taille * sizeof *monTab )" sa c'est de l'art !!! |
C'est vrai. Il y a quelque chose qui te choque ?
Marsh Posté le 14-02-2006 à 13:05:51
pj_crepes a écrit : |
Tu t'enfonces. Resnseigne toi sur ce qu'est un objet. Et cesse de confondre objet et classe.
Marsh Posté le 14-02-2006 à 13:09:20
pj_crepes a écrit : Bin c'est simple, tu demandes la taille d'une zone mémoire dont l'allocation mémoire n'a pas encore été faite puisque le coeur du sujet est le malloc. |
Et alors ? Le compilateur connait le type du pointeur. Il en déduit la taille de l'objet pointé avec 'sizeof *p' qui est une expression constante équivallente à 'sizeof p[0]'. Il n'y a pas de déréférencement.
Marsh Posté le 14-02-2006 à 13:19:14
pj_crepes a écrit : Bin ton compilateur a intérêt à être gentil parce que sous gcc 4.0 (avec les options -W -Wall) -> Warning. |
Prouve le. Montre
|
qui donne (Code::Blocks)
|
gcc 3.4.2
|
|
Marsh Posté le 14-02-2006 à 13:24:02
et voici maestro qui arrive et qui met tout le monde d'accord
Marsh Posté le 14-02-2006 à 13:34:02
Bof ça reste ambigue cette histoire d'objet. En POO, un objet est une instance d'une classe et en programmation procédurale c'est donc une instance de structure ?
Ce n'est au fond qu'un problème de vocabulaire mais bon ça serait bien d'aller au bout du sujet.
Marsh Posté le 14-02-2006 à 13:49:39
Harkonnen a écrit : et voici maestro qui arrive et qui met tout le monde d'accord |
T'ain, je pars 3 jours en vacances, et c'est le bazar...
Marsh Posté le 14-02-2006 à 13:58:32
slash33 a écrit : Bof ça reste ambigue cette histoire d'objet. En POO, un objet est une instance d'une classe et en programmation procédurale c'est donc une instance de structure ? |
C'est simple; Il faut commencer par définir ce qu'est un objet et ce qu'est une fonction (procédure).
Un langage procédural comme le C est 'orienté procédure' (on dit fonction en C). Ca signifie que l'organisation du code se fait autour des fonctions qui agissent éventuellement sur des données (objets).
Un langage orienté objet considère que l'organisation du code se fait autour des objets que l'on va implémenter sous la forme d'une classe regroupant la déclaration des données (objet instanciable) et une instance unique des fonctions servant à manipuler cet objet (les méthodes).
Marsh Posté le 11-02-2006 à 14:58:21
salut . je suis un débutant en c et j'émeré poser 3 petite Question :
1)
ésqu'il existe une fonction ou instruction pour redientionné un tableau (1D) selon le choix de l'utilisateur ?
car quand je déclar un tab avec plusieur valeurs et je nutilise qu'une petite partie , je gache de la place mémoire inutilement .
2)
comment faire la négation d'une expretion en c ; (le NON) .
3)
coment utiliser une variable booléene en c .
voila! oui je sais je suis vrément débutant .
mérci pour l'aide .