GameCorp - Index des forumsGame MakingProgrammationLangages C et C++[Langage C] Spécifications C90 ANSI/ISO
[Langage C] Spécifications C90 ANSI/ISO
| Mod |
Posté le 02 Juin 2008 à 22:36
|
|
![]() Messages : 4954 GCPoints : 2100823 |
Hop, je suis à la recherche de documents contenant les spécifications complètes du langage C suivant la norme C90, ANSI ou ISO, peu importe. Ceux-ci ne sont pas disponibles sur les sites de l'ANSI (dont l'utilité laisse à désirer) et de l'ISO (apparemment tous les documents sont payants, aux alentours de 500 francs suisses). J'ai en effet la joie d'avoir un professeur de C qui apparemment réinvente certaines parties du C, et de façon suffisamment assurée pour être troublante. Bref, je cherche une source fiable. Cela concerne notamment les déclarations et initialisations de pointeurs du type : Code : C int variable = 0; int* pointeur = &variable; La seconde instruction ne serait pas permise. Et la déclaration de type : Code : C int (*p) = 20; Qui équivaudrait à : Code : C int *p; *p = 20; Sachant qu'un C ANSI/ISO Strict, il est impossible d'affecter une variable à un pointeur : conflit de type entre le type pointeur et le type variable, ce qui implique l'utilisation d'une conversion forcée. J'ai déjà un peu fouiné sur le net sans rien récupérer. Si quelqu'un a des sources fiables, je suis preneur. Et sachant qu'il y a des programmeurs professionnels sur le site, j'apprécierais de connaître leur avis sur la question. |
|
| noob4ever |
Posté le 03 Juin 2008 à 21:59
|
|
![]() Messages : 295 GCPoints : 48742 |
Norme ansi http://megaton.obfuscated.net/~orange/devel/specifications/c89-draft.html#3.1.3.4 Je ne suis pas programmeur pro mais je donne mon avis quand même : Il ne me semble pas que int *p; *p = 20 soit équivalent à int (*p) = 20; tout simplement à cause de la priorités de '*' ( cf la norme ).
What did C:/DARTHVADER said to C:/DARTHVADER/LUKESKYWALKER ?
I'm your folder |
|
| Darktib |
Posté le 03 Juin 2008 à 22:03
|
|
![]() Messages : 4017 GCPoints : 347288 |
Meme avis que noob4ever, meme si je penche plutot pour la priorité des parentheses. Je pense que peut etre ceci serait possible: Code : (*(int* p))=20 Mais je ne suis pas du tout sur, nottament pour le fait que le pointeur n'est pas initialisé correctement : on risqque de faire des lectures hors-mémoire tres facilement avec ca... |
|
| Mod |
Posté le 05 Juin 2008 à 18:38
|
|
![]() Messages : 4954 GCPoints : 2100823 |
Merci pour le lien, c'est apparemment exactement ce que je cherchais ! Je vais prendre le temps de tout lire niveau pointeurs afin d'être sûr bien comprendre, mais à première vu effectivement, ce serait bien impossible de faire ce que je décrivais plus haut... | |
GameCorp - Index des forumsGame MakingProgrammationLangages C et C++[Langage C] Spécifications C90 ANSI/ISO
Répondre


