Types de données en C

Introduction

Les variables

Une variable est une partie de la mémoire de l'ordinateur que le programmeur alloue à son programme.
Elle peut ne contenir qu'une seule valeur (on parle alors de variable scalaire), ou plusieurs (tableaux, structures,...) sur laquelle (ou lesquelles) nous pouvons effectuer un calcul arithmétique.


C'est par la déclaration de la variable que nous allons lui attribuer un identificateur (son nom), et déterminer son type (le genre d'élément qui y sera rangé).
La spécification du type de la variable permet la réservation de la quantité de mémoire nécessaire, et répond à un ensemble de mots clés.

La déclaration

Syntaxe: [classe] type identificateur [initialiseur];

Les éléments entre crochets sont facultatifs.

  • Classe : voir page classe.
  • Type : précédés du signe %, les types les plus souvent rencontrés sont int, char, et float
  • Identificateur: c'est le nom que nous allons attribuer à la variable. La définition de plusieurs variables de même type en une seule instruction est possible en séparant les identificateurs par des virgules.
    L'identificateur peut être composé de lettres (attention, le langage C fait la différence entre majuscules et minuscules), de chiffres, et du caractère _ (souligné), mais le premier caractère ne peut être un chiffre. Le caractère d'espacement (blanc) est interdit, ainsi que les caractères accentués.
    Pour un pointeur, le nom est précédé du signe * (étoile).
  • Initialiseur : le signe = suivi d'une valeur, affecte cette valeur à la variable placée à gauche du signe.

Selon la durée de vie souhaitée pour une variable, on peut la déclarer à deux endroits différents. On parle alors de variable locale, ou de variable globale.

Déclaration variables locales

Pré requis: bloc d'instructions.
Le bloc d'instructions, rappelons le, est un ensemble de déclarations et d'instructions délimités par des accolades.

Une déclaration locale de variable est une déclaration effectuée à l'intérieur d'un bloc, et la durée de vie de la variable n'excède pas les limites du bloc.
Lorsque le programme atteint le début du bloc ({), la mémoire nécessaire aux variables locales est réservée en haut de la pile (dont la taille augmente donc), espace mémoire retiré de la pile à la sortie du bloc.
Le seul cas où la mémoire reste allouée pour cette variable (donc où la valeur que contient la variable est conservée) est le cas où on quitte un bloc pour aller dans une fonction appelée (mais dans ce cas le terme "quitter" le bloc est sujet à discussions).

La déclaration locale d'une variable évite donc le gaspillage de la mémoire, mais nous devons alors trouver une solution pour retourner la valeur de cette variable si elle doit être utilisée hors du bloc.

Exemple d'utilisation de variable locale:

  1. #include <stdio.h>
  2. int fonct2 (int var2);

Prototype de la fonction fonct2

  1. void main (void)
  2. {
  3. int var1=97;
  4. printf("%c\n%c\n", fonct2 (var1), var1);
  5. }

Entrée dans le bloc, déclaration et initialisation de var1 (pour info: à quoi correspond cette valeur dans le code ASCII ?).

Ensuite, nous faisons appel à la fonction fonct2

  1. int fonct2 (int var2)
  2. {
  3. int var3;
  4. var3=var2-32;
  5. var2=0;
  6. return(var3);
  7. }

Réservation d'un emplacement mémoire pour var2 (à laquelle on transmet la valeur de var1)en haut de la pile.

Entrée dans le bloc, et allocation d'un emplacement mémoire pour var3, à laquelle on affecte la valeur var2-32 (=65. Toujours pour info: que représente la valeur 65 dans le code ASCII ?).

Réinitialisation de var2 et retour de la valeur 65 vers la fonction main (libération de la mémoire allouée à var2 et à var3).

L'exécution du programme provoque donc la sortie à l'écran de la lettre A suivie d'un saut de ligne, et de la lettre a (fainéants, vous auriez pu chercher un peu...).

Tableau des principaux types de variables
TypeSignificationArgument
cUn seul caractèrechar*arg
dEntier décimalint*arg
DEntier décimallong*arg
eVirgule flottantefloat*arg
EVirgule flottantedouble*arg
fVirgule flottantefloat*arg
gVirgule flottantefloat*arg
GEntier, octal, hexadécimaldouble*arg
iEntier, octal, hexadécimalint*arg
IEntier, octal, hexadécimalint*arg
oEntier, octal, sans signeint*arg
OEntier, octal, sans signelong*arg
pHexadécimalvoid far*arg / void near*arg
sChaîne avec NULLchar tableau[]
uEntier décimal non signéunsign.int*arg
UEntier décimal non signéunsign.long*arg
xEntier hexadécimal non signéint*arg
XEntier hexadécimal non signélong*arg

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

12 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-3
Document créé le 19/03/02 01:00, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http:///www.gaudry.be/c-variables.html
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15838 documents
455 astuces.
550 niouzes.
3107 definitions.
447 membres.
8121 messages.

Document genere en :
0,08 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
agile is not about finishing fast. It’s about sensibly adapting based on the realities as they emerge.

Venkat Subramaniam
 
l'infobrol
Nous sommes le Dimanche 28 Mai 2017, 05:16, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)