Cours08 c INF ?? COURS Les Classes d ? Allocation L ? Allocation Dynamique de Mémoire Les Algorithmes de Tri Et les Fichiers Textes Eric Thé Service des Enseignements Généraux École de Technologie Supérieure Hiver C La Notion de Storage Class ? En langage

INF ?? COURS Les Classes d ? Allocation L ? Allocation Dynamique de Mémoire Les Algorithmes de Tri Et les Fichiers Textes Eric Thé Service des Enseignements Généraux École de Technologie Supérieure Hiver C La Notion de Storage Class ? En langage C une variable a toujours attributs le type de données et le type d ? allocation de mémoire ou storage class Il existe types d ? allocation de mémoire di ?érents auto ?? c ? est le type d ? allocation par défaut donc on utilise jamais ce pré ?xe Les variables auto sont des variables locales aux blocs-fonctions et elles sont automatiquement détruites à la sortie du bloc de sa déclaration extern ?? ce type d ? allocation est utilisé pour indiquer qu ? une variable à déjà été déclarée ailleurs globalement dans le projet actuel Donc le pré ?xe extern dit au compilateur va chercher cette déclaration de variable ailleurs ? Exemple Voici un petit projet à ?chiers-source Fich cpp Fich cpp include int fnc void prototype int a b variables globales int fnc void extern int a int b void main printf d d d a b fnc a b return a b ?? Va a ?cher register ?? indique une allocation mémoire dans un registre de donnée du microprocesseur mémoire haute-vitesse Ce type d ? allocation est en fait une demande au compilateur il n ? est pas garanti que cette demande puisse être réalisée Il est utilisé uniquement pour optimiser la performance de code Ex register long i for i i i static ?? va forcer une variable locale à demeurer vivante après la ?n de son bloc de déclaration L ? espace mémoire de cette variable locale demeure réservé pour la durée entière du programme contrairement au type d ? allocation auto L ? initialisation si elle est présente ne sera faite qu ? à la première rencontre de la variable sinon la variable statique est initialisée à zéro Exemple int plus void implémente un compteur cyclique static int cnt initialisation pour la ière fois seulement cnt if cnt cnt return cnt ?? Si on enlève le pré ?xe static la fonction renvoie toujours ? ?? Attention Dans cet exemple cnt ? n ? est PAS une variable globale CGET NOM C Fonction qui saisi un nom dans un tableau de char include include include include WinConsole h pour clrscr clreol et gotoxy de ?ne BKSPACE de ?ne RETURN de ?ne MAXL char getnom int int prototype de la fonction de saisie int main char nom clrscr gotoxy printf Entrez une cha? ne de caractères nom getnom gotoxy printf chaine s system pause return longueur d n nom strlen nom GET NOM va saisir un nom a partir de la position-écran px py char getnom int px int py static char bu ? MAXL variable locale static ne sera pas détruite char ch int l ?ni do ch getch switch ch selon le caractère saisi au clavier case BKSPACE BKSPACE on e

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Aucune attribution requise
Partager