Le langage C Rappel Pointeurs & Allocation de mémoire.

Slides:



Advertisements
Présentations similaires
GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Introduction au Langage C,C++
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Introduction au langage C
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
GEF 243B Programmation informatique appliquée
C.
Paramètres et pointeurs
Structures et unions types énumérés Qu'est-ce qu'une structure
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Fonctions Dans un programme : certaines opérations (ou séquences d'opérations) peuvent se répéter plusieurs fois : affichage de tableau, saisie, ou même.
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
PROGRAMMATION SCIENTIFIQUE EN C PRO Généralités u Présentation du plan de cours –Disponibilité –Références u Environnement de travail –Langage C.
TRAITEMENT DE STRUCTURES
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les fichiers binaires en C++
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Points importants de la semaine Les allocations programmées de mémoire. Les enregistrements.
Un langage de programmation hybride
8PRO100 Éléments de programmation Les types composés.
Méthode et Outils pour la Programmation
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-2000
Plan cours La notion de pointeur et d’adresse mémoire.
Structures de données IFT-2000
Types de données fondamentaux
L’essentiel du langage C
Structures des données
Stocker plusieurs valeurs de même type dans une variable
Le langage C Structures de données
CYCLE 1 : Saisir – Afficher – Données Déclarer des Variables dans un programme 1- Rôle de la déclaration de variable 2- Syntaxe de la déclaration de variable.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Les pointeurs L'opérateur &.
Ch. PAUL - Piles et Files à l'aide de listes chainées
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Université Mohammed V-Agdal École Supérieure de Technologie Salé
Notions de pointeurs en C
Les pointeurs Suite.
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Argc et argv Utilisation des paramètres de la ligne de commande.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
Les types composés Les enregistrements.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Introduction au langage C Structures de données
8PRO107 Éléments de programmation Les adresses et les pointeurs.
3ième Classe (Mardi, 23 Septembre) CSI2572. O jourd'8: E Allocation de mémoire E Déallocation de mémoire E Tableaux (n dimensions) E Arithmetique des.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Informatique 2A Langage C 3 ème séance.
Transcription de la présentation:

Le langage C Rappel Pointeurs & Allocation de mémoire

Plan Rappel Notion de pointeur Pointeurs & Tableaux Les variables en mémoire Adressage des variables Notion de pointeur Pointeurs & Tableaux Allocation dynamique de la mémoire

Rappel : Les variables en mémoire Une variable est destinée à contenir une valeur du type avec lequel elle est déclarée. Physiquement cette valeur se situe en mémoire. Exemple : un entier nommé x int x; // Réserve un emplacement pour un entier en mémoire. x = 10; // Écrit la valeur 10 dans l'emplacement réservé.

Rappel : Les variables en mémoire ( Les cases de la mémoire ) int x; x = 10;

Rappel : Adressage des variables En C , on dispose de deux mode d’adressage : Adressage direct : Accès au contenu d'une variable par le nom de la variable. Adressage indirect : Accès au contenu d'une variable par le biais de l'adresse de la variable. L’opérateur & permet de récupérer l’adresse d’une variable : &x ceci est l’adresse de x .

Notion de pointeur Définition : "Un pointeur est une variable spéciale qui peut contenir l'adresse d'une autre variable. " Chaque pointeur est limité à un type de données. Déclaration : <type>* nom_pointeur; int *px; // Réserve un emplacement pour stocker une adresse // mémoire. px = &x; // Ecrit l'adresse de x dans cet emplacement.

Notion de pointeur int *px; px = &x; px pointe sur x

Notion de pointeur L’opérateur * permet d’accéder au contenu de la variable pointée : *px = 20; // Maintenant x est égal à 20. 20

Notion de pointeur Après les instructions: <type> a; <type> *p; p = &a; p pointe sur a p désigne &a (adresse de a) *p désigne a (valeur ou contenu de a)

Allocation dynamique de la mémoire Souvent, nous devons travailler avec des données dont nous ne pouvons pas prévoir le nombre et la grandeur lors de la programmation.  Allocation dynamique La réservation de la mémoire peut donc seulement se faire pendant l'exécution du programme.

Allocation dynamique de la mémoire La fonction malloc (<stdlib.h> ) malloc( <N> ) fournit l'adresse d'un bloc en mémoire de <N> octets libres ou la valeur zéro (NULL)s'il n'y a pas assez de mémoire L'opérateur unaire sizeof sizeof (<type>) fournit la grandeur pour un objet du type <type>

Allocation dynamique de la mémoire int nbr; int *p; printf(" Entrez le nombre de valeurs :"); scanf("%d", &nbr); p = (int *) malloc(nbr*sizeof(int)); Il est toujours utile de tester si l’allocation a eu lieu

Allocation dynamique de la mémoire La fonction free (<stdlib.h> ) free( <Pointeur> ) libère le bloc de mémoire (déjà alloué) désigné par le <Pointeur> Il est conseillé d'affecter la valeur zéro NULL au pointeur immédiatement après avoir libéré le bloc de mémoire qui y était attaché. Si nous ne libérons pas explicitement la mémoire à l'aide free, alors elle est libérée automatiquement à la fin du programme.

Allocation dynamique de la mémoire #include <stdio.h> #include <stdlib.h> main() { int i; int tab[10] ; for(i=0; i<10; i++) tab[i]=i; printf("%d\n",tab[i]); } #include <stdio.h> #include <stdlib.h> main() { int i, nbr; int* p; printf("entrer un nombre: "); scanf("%d",&nbr); p=(int*)malloc(nbr*sizeof(int)); for(i=0; i<nbr; i++) *(p+i)=i; printf("%d\n",*(p+i)); free(p); }