Language c

Disponible uniquement sur Etudier
  • Pages : 9 (2009 mots )
  • Téléchargement(s) : 0
  • Publié le : 25 mai 2011
Lire le document complet
Aperçu du document
www.ncottin.net

Pratique du langage C
Introduction Notions fondamentales Concepts avancés
Nathanaël Cottin
22 décembre 2006

Avant-propos
• Ce document explique les principaux points délicats du langage C • Il n’a pas pour vocation d’introduire l’ensemble des éléments du langage C, notamment syntaxiques, supposés connus • Il aborde des concepts d’utilisation évoluée du langage C

22décembre 2006

Pratique du langage C

2

1

Plan général
• Partie 1 : Principaux types de données • Partie 2 : Variables et pointeurs • Partie 3 : Les tableaux • Partie 4 : Passage de paramètres aux fonctions • Annexes : Concepts évolués du langage

22 décembre 2006

Pratique du langage C

3

www.ncottin.net

Partie 1 Principaux types de données
Types élémentaires Types évoluésTypes dérivés

22 décembre 2006

Pratique du langage C

4

2

Types élémentaires
• Type entier : « long », « int », « short » • Type caractère : « char » • Types réel : « long double », « double » et « float » • Type booléen : « int », sachant que la valeur logique « faux » s’exprime par 0 et « vrai » par toute autre valeur (généralement 1) • Types dérivés (« unsigned », etc.)

22décembre 2006

Pratique du langage C

5

Espace mémoire occupé
Type élémentaire long int short char long double double float
22 décembre 2006

Taille (en octets) 4 2 ou 4 2 1 10 8 4

Pratique du langage C

6

3

Types évolués : tableaux (1/2)
• Tableaux :
– Données stockées en mémoire de manière contiguë – Nom attribué au tableau = pointeur sur son premier élément

• Exemple :int tab[] = {11, 22, 33, 44, 55};

22 décembre 2006

Pratique du langage C

7

Types évolués : tableaux (2/2)
• Chaîne de caractères : tableau de « char » terminé par le caractère spécial « '\0' » • Exemple :
char maChaine[] = "Hello world!";

22 décembre 2006

Pratique du langage C

8

4

Types dérivés (1/2)
• Type énuméré :
enum bool {FALSE,TRUE,FAUX=0,VRAI};
Lesidentificateurs de la liste énumérée sont des constantes entières commençant par défaut à 0 et incrémentées La valeur entière d’un identificateur peut être spécifiée. Dans ce cas, les valeurs des identifiants suivants la prennent pour référence

Ainsi : FALSE = 0, TRUE = 1 FAUX = 0 et VRAI = 1 Donc : FALSE = FAUX = 0 et TRUE = VRAI = 1

• Structure :
struct personne {char *nom; char *prenom;};
22décembre 2006 Pratique du langage C 9

Types dérivés (2/2)
• Union :
union nombre {int nbInt; long nbLong;};
La quantité de mémoire réservée lors de l’allocation(automatique ou dynamique) correspond à l’élément le plus gourmand (« long » dans cet exemple)

• Champs de bits : (type entier en mémoire)
struct bits {int b1:1; int b2:15;};
b2 (15 bits) b1 (1 bit) poids faible

22 décembre 2006Pratique du langage C

10

5

www.ncottin.net

Partie 2 Variables et pointeurs
Relations Usage

22 décembre 2006

Pratique du langage C

11

Définitions
• Une déclaration de variable réserve un certain nombre de blocs en mémoire selon le type de cette variable. Le premier bloc mémoire occupé est supposé réservé à l’adresse « @ » • Un pointeur occupe une taille fixe (typeentier) en mémoire. Il référence une variable (ou NULL)

22 décembre 2006

Pratique du langage C

12

6

Relations variable / pointeur
• Déclaration d’une variable entière : « int i; »
« @i » désigne l’adresse mémoire de la variable « i »

• Déclaration d’un pointeur sur un entier : « int *p; »
« @p » désigne l’adresse mémoire du pointeur « p »

• « p » référence la variable « i » :« p = &i; »
« & » est un opérateur de déréférencement

22 décembre 2006

Pratique du langage C

13

Assignation d’une valeur
• Assignation directe : « i = 10; »

• Assignation indirecte : « *p = 10; »
« * » permet de se rendre à l’adresse pointée par « p » Le symbole « * » est utilisé à la fois pour déclarer une variable de type pointeur et pour accéder à la valeur pointée

22...
tracking img