Les tableaux (Arrays)Les pointeurs (Pointers)
Cours: Conception orientée objetChapitres I & II - Rappel (1) -
Dr. Fateh SEGHIREmail: [email protected]
Sétif 1 universityFaculty of Technology
Department of Electrotechnic
March 02, 2020
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Déclaration d’un tableau
Définition
Un tableau fonctionne comme une variable. Il peut stocker un groupe de valeurs,toutes du même type. Ces valeurs sont enregistrées ensemble dans desemplacements mémoires consécutifs.
Définition d’un tableau
Pour définir un tableau; trois éléments doivent être spécifiés dans sa déclaration.1 Nom du tableau: il détermine l’identificateur à utiliser pour manipuler les
données d’un tableau.2 Type des donnés: il spécifie le type des données stockées dans le tableau.3 Déclarateur de taille: il indique le nombre d’éléments ou de valeurs que le
tableau peut contenir.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Déclaration d’un tableau
Définition
Un tableau fonctionne comme une variable. Il peut stocker un groupe de valeurs,toutes du même type. Ces valeurs sont enregistrées ensemble dans desemplacements mémoires consécutifs.
Définition d’un tableau
Pour définir un tableau; trois éléments doivent être spécifiés dans sa déclaration.1 Nom du tableau: il détermine l’identificateur à utiliser pour manipuler les
données d’un tableau.2 Type des donnés: il spécifie le type des données stockées dans le tableau.3 Déclarateur de taille: il indique le nombre d’éléments ou de valeurs que le
tableau peut contenir.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Exemples de déclaration des tableaux
Déclaration Nom du tableau Types de données Déclarateur detaille
int days[6]; days int 6const int NUM_DAYS = 6;
int days[NUM_DAYS]; days int 6float temperatures[100]; temperatures float 100
string names[10]; names string 10long units[50]; units long 50
double sizes[1200] sizes double 1200
Remarque
Le déclarateur de taille d’un tableau doit être une expression entière constante avecune valeur supérieure à zéro. Il peut s’agir d’un nombre fixe ou d’une constantenommée.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Exemples de déclaration des tableaux
Déclaration Nom du tableau Types de données Déclarateur detaille
int days[6]; days int 6const int NUM_DAYS = 6;
int days[NUM_DAYS]; days int 6float temperatures[100]; temperatures float 100
string names[10]; names string 10long units[50]; units long 50
double sizes[1200] sizes double 1200
Remarque
Le déclarateur de taille d’un tableau doit être une expression entière constante avecune valeur supérieure à zéro. Il peut s’agir d’un nombre fixe ou d’une constantenommée.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Taille mémoire occupée par un tableau
Taille mémoire d’un tableau
L’espace mémoire occupé par un tableau dépend de type de données utilisé ainsi queson nombre d’éléments. Cet espace peut être calculé en multipliant la taille d’unélément (souvent en octets) par le nombre d’éléments dans le tableau.
Array Definition Number of Ele-ments
Size of EachElement
Size of the Ar-ray
char letters[25]; 25 1 byte 25 bytesshort rings[100]; 100 2 bytes 200 bytesint miles[84]; 84 4 bytes 336 bytesfloat temp[12]; 12 4 bytes 48 bytesdouble distance[1000]; 1000 8 bytes 8000 bytes
Taille mémoire via sizeof
L’opérateur sizeof peut être aussi utilisé pour déterminer la taille mémoire occupée parun tableau
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Taille mémoire occupée par un tableau
Taille mémoire d’un tableau
L’espace mémoire occupé par un tableau dépend de type de données utilisé ainsi queson nombre d’éléments. Cet espace peut être calculé en multipliant la taille d’unélément (souvent en octets) par le nombre d’éléments dans le tableau.
Array Definition Number of Ele-ments
Size of EachElement
Size of the Ar-ray
char letters[25]; 25 1 byte 25 bytesshort rings[100]; 100 2 bytes 200 bytesint miles[84]; 84 4 bytes 336 bytesfloat temp[12]; 12 4 bytes 48 bytesdouble distance[1000]; 1000 8 bytes 8000 bytes
Taille mémoire via sizeof
L’opérateur sizeof peut être aussi utilisé pour déterminer la taille mémoire occupée parun tableau
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Taille mémoire d’un tableau via sizeof (1)
1 # inc lude 2 using namespace std ;3 i n t main ( )4 {5 char l e t t e r s [ 2 5 ] ;6 shor t r i ngs [ 1 0 0 ] ;7 i n t mi les [ 8 4 ] ;8 f l o a t temp [ 1 2 ] ;9 double d is tance [ 1 0 0 0 ] ;
10 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Taille mémoire d’un tableau via sizeof (2)
13 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableau
Indices d’accès
Chaque élément dans un tableau est accessible par son indice (subscript) qui est unnombre entier unique. Pour un tableau donné Tab de n éléments, C++ assigne:
La valeur 0 à l’indice du premier élément du Tab.La valeur 1 à l’indice du deuxième élément du Tab.. . .
La valeur n-1 à l’indice du dernier élément du Tab.
1 shor t hours [ 6 ] ;2 hours [ 0 ] = 20; / /
Store 20 i n thef i r s t element
3 hours [ 3 ] = 30;
Remarque
Les autres éléments du hours ne sont pasinitialisés. Si hours est déclaré globalement , tousces éléments sont initialisés par défaut aux 0.Tandis que si hours est déclaré localement , cesvaleurs ne sont pas définies.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableau
Indices d’accès
Chaque élément dans un tableau est accessible par son indice (subscript) qui est unnombre entier unique. Pour un tableau donné Tab de n éléments, C++ assigne:
La valeur 0 à l’indice du premier élément du Tab.La valeur 1 à l’indice du deuxième élément du Tab.. . .
La valeur n-1 à l’indice du dernier élément du Tab.
1 shor t hours [ 6 ] ;2 hours [ 0 ] = 20; / /
Store 20 i n thef i r s t element
3 hours [ 3 ] = 30;
Remarque
Les autres éléments du hours ne sont pasinitialisés. Si hours est déclaré globalement , tousces éléments sont initialisés par défaut aux 0.Tandis que si hours est déclaré localement , cesvaleurs ne sont pas définies.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableau par cin & cout (1)
1 # inc lude 2 using namespace std ;3 i n t main ( )4 {5 const i n t NUM_EMPLOYEES = 6;6 i n t hours [NUM_EMPLOYEES] ;7 / / Get the hours worked by each employee .8 cout > hours [ 1 ] ;12 c in >> hours [ 2 ] ;13 c in >> hours [ 3 ] ;14 c in >> hours [ 4 ] ;15 c in >> hours [ 5 ] ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableau par cin & cout (2)
16 / / D isp lay the values i n the ar ray .17 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableau par des boucles (1)Version simplifiée du programme précédent. La première boucle est utilisée pour
enregistrer les valeurs saisies par l’objet cin.
1 # inc lude 2 using namespace std ;3 i n t main ( )4 { const i n t NUM_EMPLOYEES = 6; i n t hours [NUM_EMPLOYEES] ;5 i n t count ; / / Loop counter6 / / I npu t the hours worked .7 f o r ( count = 0 ; count < NUM_EMPLOYEES; count ++)8 {9 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableau par des boucles (2)
Version simplifiée du programme précédent. La deuxième boucle utilise l’objet cout
pour afficher les valeurs entrées.
13 / / D isp lay the contents o f the ar ray .14 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Pas de vérification des limites d’un tableau en C++ (1)
Dépassement des limites d’un tableau
C++ ne vérifie pas le dépassement des limites d’un tableau. Attention aux accèsd’éléments inexistants via des valeurs d’indices en dehors des limites définies.
1 / / This program unsafe ly accesses an area of memory byw r i t i n g values beyond an ar ray ’ s boundary .
2 / /WARNING: I f you compile and run t h i s program , i t couldcrash .
3 # inc lude 4 using namespace std ;5 i n t main ( )6 { const i n t SIZE = 3; / / Constant f o r the ar ray s ize7 i n t values [ SIZE ] ; / / An ar ray o f 3 i n tege rs8 i n t count ; / / Loop counter v a r i a b l e
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Pas de vérification des limites d’un tableau en C++ (2)
9 / / Attempt to s to re f i v e numbers i n the three−elementar ray .
10 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Initialisation des éléments d’un tableau
Déclaration d’un tableau avec initialisation d’éléments
C++ permet d’initialiser un tableau d’éléments au moment de sa déclaration
1 const i n t MONTHS = 12;2 i n t days [MONTHS] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 ,
31 , 30 , 31 } ;
Initialisation partielle d’un tableau
Initialiser les 4 premiers éléments. Les éléments non initialisés seront mis à zéro.
1 const i n t SIZE = 7; i n t numbers [ SIZE ] = {1 , 2 , 4 , 8 } ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Initialisation des éléments d’un tableau
Déclaration d’un tableau avec initialisation d’éléments
C++ permet d’initialiser un tableau d’éléments au moment de sa déclaration
1 const i n t MONTHS = 12;2 i n t days [MONTHS] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 ,
31 , 30 , 31 } ;
Initialisation partielle d’un tableau
Initialiser les 4 premiers éléments. Les éléments non initialisés seront mis à zéro.
1 const i n t SIZE = 7; i n t numbers [ SIZE ] = {1 , 2 , 4 , 8 } ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Définition d’un tableau sans spécifier son déclarateurde taille
Il est possible de déclarer un tableau sans spécifier sataille, à condition de fournir une liste d’initialisation.C++ rend automatiquement le tableau assez grand pourcontenir toutes les valeurs d’initialisation.Exemple de déclaration d’un tableau avec cinq élémentsde type double.
1 double r a t i n g s [ ] = { 1 . 0 , 1 .5 , 2 .0 , 2 .5 , 3 . 0 } ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Définition d’un tableau sans spécifier son déclarateurde taille
Il est possible de déclarer un tableau sans spécifier sataille, à condition de fournir une liste d’initialisation.C++ rend automatiquement le tableau assez grand pourcontenir toutes les valeurs d’initialisation.Exemple de déclaration d’un tableau avec cinq élémentsde type double.
1 double r a t i n g s [ ] = { 1 . 0 , 1 .5 , 2 .0 , 2 .5 , 3 . 0 } ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Définition d’un tableau sans spécifier son déclarateurde taille
Il est possible de déclarer un tableau sans spécifier sataille, à condition de fournir une liste d’initialisation.C++ rend automatiquement le tableau assez grand pourcontenir toutes les valeurs d’initialisation.Exemple de déclaration d’un tableau avec cinq élémentsde type double.
1 double r a t i n g s [ ] = { 1 . 0 , 1 .5 , 2 .0 , 2 .5 , 3 . 0 } ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
La boucle for à base d’intervalle
Introduite avec C++11. Son format général est le suivant:
1 f o r ( dataType rangeVar iab le : a r ray )2 statement ;
dataType: est le type de la variable d’intervalle. Il doit être identique au type deséléments du tableau ou à un type de conversion automatique de ces éléments.
rangeVariable: est le nom de la variable d’intervalle. Lors de la premièreitération de la boucle, elle reçoit la valeur du premier élément; lors de ladeuxième itération, elle reçoit la valeur du deuxième élément, et ainsi de suite.
array : est le nom d’un tableau sur lequel la boucle fonctionne.statement : est une instruction qui s’exécute lors d’une itération de boucle. Pourplusieurs instructions, placez-les dans un ensemble d’accolades.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
La boucle for à base d’intervalle
Introduite avec C++11. Son format général est le suivant:
1 f o r ( dataType rangeVar iab le : a r ray )2 statement ;
dataType: est le type de la variable d’intervalle. Il doit être identique au type deséléments du tableau ou à un type de conversion automatique de ces éléments.
rangeVariable: est le nom de la variable d’intervalle. Lors de la premièreitération de la boucle, elle reçoit la valeur du premier élément; lors de ladeuxième itération, elle reçoit la valeur du deuxième élément, et ainsi de suite.
array : est le nom d’un tableau sur lequel la boucle fonctionne.statement : est une instruction qui s’exécute lors d’une itération de boucle. Pourplusieurs instructions, placez-les dans un ensemble d’accolades.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
La boucle for à base d’intervalle
Introduite avec C++11. Son format général est le suivant:
1 f o r ( dataType rangeVar iab le : a r ray )2 statement ;
dataType: est le type de la variable d’intervalle. Il doit être identique au type deséléments du tableau ou à un type de conversion automatique de ces éléments.
rangeVariable: est le nom de la variable d’intervalle. Lors de la premièreitération de la boucle, elle reçoit la valeur du premier élément; lors de ladeuxième itération, elle reçoit la valeur du deuxième élément, et ainsi de suite.
array : est le nom d’un tableau sur lequel la boucle fonctionne.statement : est une instruction qui s’exécute lors d’une itération de boucle. Pourplusieurs instructions, placez-les dans un ensemble d’accolades.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
La boucle for à base d’intervalle
Introduite avec C++11. Son format général est le suivant:
1 f o r ( dataType rangeVar iab le : a r ray )2 statement ;
dataType: est le type de la variable d’intervalle. Il doit être identique au type deséléments du tableau ou à un type de conversion automatique de ces éléments.
rangeVariable: est le nom de la variable d’intervalle. Lors de la premièreitération de la boucle, elle reçoit la valeur du premier élément; lors de ladeuxième itération, elle reçoit la valeur du deuxième élément, et ainsi de suite.
array : est le nom d’un tableau sur lequel la boucle fonctionne.statement : est une instruction qui s’exécute lors d’une itération de boucle. Pourplusieurs instructions, placez-les dans un ensemble d’accolades.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
La boucle for à base d’intervalle
Introduite avec C++11. Son format général est le suivant:
1 f o r ( dataType rangeVar iab le : a r ray )2 statement ;
dataType: est le type de la variable d’intervalle. Il doit être identique au type deséléments du tableau ou à un type de conversion automatique de ces éléments.
rangeVariable: est le nom de la variable d’intervalle. Lors de la premièreitération de la boucle, elle reçoit la valeur du premier élément; lors de ladeuxième itération, elle reçoit la valeur du deuxième élément, et ainsi de suite.
array : est le nom d’un tableau sur lequel la boucle fonctionne.statement : est une instruction qui s’exécute lors d’une itération de boucle. Pourplusieurs instructions, placez-les dans un ensemble d’accolades.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
La boucle for à base d’intervalle - Exemples-
Affichage des éléments d’un tableau.
1 i n t [ ] numbers = { 3 , 6 , 9 } ;2 f o r ( i n t va l : numbers )3 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
La boucle for à base d’intervalle - Exemples-
Affichage des éléments d’un tableau.
1 i n t [ ] numbers = { 3 , 6 , 9 } ;2 f o r ( i n t va l : numbers )3 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
La boucle for à base d’intervalle - Exemples-
Affichage des éléments d’un tableau.
1 i n t [ ] numbers = { 3 , 6 , 9 } ;2 f o r ( i n t va l : numbers )3 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Exercices1 Somme et moyenne des valeurs d’un tableau numérique2 Rechercher une valeur ainsi que son nombre d’occurrences dans un tableau T.
(recherche linéaire vs binaire). NB: La recherche bianaire nécessite que letableau T est préalablement trié.
3 Trouver des éléments les plus élevées (max) et les plus basses (min) d’untableau numérique
4 Comparer deux tableaux (détermine si un tableau T et autre P contiennent lesmêmes valeurs.)
5 Permuter enter deux éléments différents d’un tableau.6 Inverser des éléments de deux tableaux T et P (une partie de T sera permuté
avec une autre de P).7 Décalage à droite (à gauche) de un (m) éléments consécutifs d’un tableau T de
taille n, tel-que n > m.8 Trier par ordre croissant (décroissant) des éléments d’un tableau (The Bubble
and Selection Sorts).
9 Modification d’un tableau avec une boucle à base d’intervalle (utilisation de
l’opérateur &)
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Les tableaux à deux dimensionsDéclaration d’un tableau à deux dimensions: Matrice de 03 lignes et 04 colonnes
1 double scores [ 3 ] [ 4 ] ;
Il est très pratique de placer les accolades intérieures, qui sont optionnels, pourinitialiser les éléments de chaque ligne.
1 i n t hours [ 3 ] [ 2 ] = { { 8 , 5 } , {7 , 9 } , {6 , 3 } } ;2 / / The same hours d e f i n i t i o n as the prev ious one3 i n t hours [ 3 ] [ 2 ] = { { 8 , 5 } ,4 {7 , 9 } ,5 {6 , 3 } } ;6 / / The same hours d e f i n i t i o n as the two prev ious ones
( ex t ra braces are op t i onne l )7 i n t hours [ 3 ] [ 2 ] = {8 , 5 , 7 , 9 , 6 , 3 } ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Les tableaux à deux dimensionsDéclaration d’un tableau à deux dimensions: Matrice de 03 lignes et 04 colonnes
1 double scores [ 3 ] [ 4 ] ;
Il est très pratique de placer les accolades intérieures, qui sont optionnels, pourinitialiser les éléments de chaque ligne.
1 i n t hours [ 3 ] [ 2 ] = { { 8 , 5 } , {7 , 9 } , {6 , 3 } } ;2 / / The same hours d e f i n i t i o n as the prev ious one3 i n t hours [ 3 ] [ 2 ] = { { 8 , 5 } ,4 {7 , 9 } ,5 {6 , 3 } } ;6 / / The same hours d e f i n i t i o n as the two prev ious ones
( ex t ra braces are op t i onne l )7 i n t hours [ 3 ] [ 2 ] = {8 , 5 , 7 , 9 , 6 , 3 } ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Initialisation partielle d’un tableau à deux dimensions
les accolades intérieures vous permet d’effectuer uneinitialisation partielle non-ordonnée.Dans l’exemple de la déclaration suivante:Mat[0][0] est initialisé à 1, Mat[1][0] est initialisé à 3,Mat[1][1] est initialisé à 4 et Mat[2][0] est initialisé à 5.
1 i n t Mat [ 3 ] [ 2 ] = { { 1 } , {3 , 4 } , { 5 } } ;
Mat[0][1] et Mat[2][1] ne sont pas initialisés.Comme certains éléments du Mat étant initialisés, cesdeux éléments sont automatiquement mis à zéro.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Initialisation partielle d’un tableau à deux dimensions
les accolades intérieures vous permet d’effectuer uneinitialisation partielle non-ordonnée.Dans l’exemple de la déclaration suivante:Mat[0][0] est initialisé à 1, Mat[1][0] est initialisé à 3,Mat[1][1] est initialisé à 4 et Mat[2][0] est initialisé à 5.
1 i n t Mat [ 3 ] [ 2 ] = { { 1 } , {3 , 4 } , { 5 } } ;
Mat[0][1] et Mat[2][1] ne sont pas initialisés.Comme certains éléments du Mat étant initialisés, cesdeux éléments sont automatiquement mis à zéro.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Initialisation partielle d’un tableau à deux dimensions
les accolades intérieures vous permet d’effectuer uneinitialisation partielle non-ordonnée.Dans l’exemple de la déclaration suivante:Mat[0][0] est initialisé à 1, Mat[1][0] est initialisé à 3,Mat[1][1] est initialisé à 4 et Mat[2][0] est initialisé à 5.
1 i n t Mat [ 3 ] [ 2 ] = { { 1 } , {3 , 4 } , { 5 } } ;
Mat[0][1] et Mat[2][1] ne sont pas initialisés.Comme certains éléments du Mat étant initialisés, cesdeux éléments sont automatiquement mis à zéro.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableaux à deux dimensions
Chaque élément a deux indices (un pour sa ligne et unautre pour sa colonne).Par exemple, l’instruction suivante affecte la valeur 12.25 àl’élément de la ligne 2, colonne 1 du tableau scores.
1 double scores [ 3 ] [ 4 ] ;2 scores [ 2 ] [ 1 ] = 12.25;
Les boucles imbriquées sont souvent utilisées pourtraiter les données d’un tableau à deux dimensions.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableaux à deux dimensions
Chaque élément a deux indices (un pour sa ligne et unautre pour sa colonne).Par exemple, l’instruction suivante affecte la valeur 12.25 àl’élément de la ligne 2, colonne 1 du tableau scores.
1 double scores [ 3 ] [ 4 ] ;2 scores [ 2 ] [ 1 ] = 12.25;
Les boucles imbriquées sont souvent utilisées pourtraiter les données d’un tableau à deux dimensions.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Accès aux éléments d’un tableaux à deux dimensions
Chaque élément a deux indices (un pour sa ligne et unautre pour sa colonne).Par exemple, l’instruction suivante affecte la valeur 12.25 àl’élément de la ligne 2, colonne 1 du tableau scores.
1 double scores [ 3 ] [ 4 ] ;2 scores [ 2 ] [ 1 ] = 12.25;
Les boucles imbriquées sont souvent utilisées pourtraiter les données d’un tableau à deux dimensions.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Exemple d’utilisation des boucles imbriquées avec untableau à deux dimensions (1)
1 / / This program c a l c u l a t e s the c lass average2 / / f o r each of the t e s t scores o f i t s s tudents3 # inc lude 4 # inc lude 5 using namespace std ;6 i n t main ( )7 {8 const i n t NUM_STUDENTS = 3; / / Number o f s tudents9 const i n t NUM_TESTS = 3; / / Number o f t e s t scores
10 double scores [NUM_STUDENTS] [ NUM_TESTS] ;11 i n t student , t e s t ; / / Loop counters .12 double t o t a l ; / / Accumulator i s set i n the loops13 double average ; / / To hold each score ’ s c lass average
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Exemple d’utilisation des boucles imbriquées avec untableau à deux dimensions (2)
14 / / Nested loops to f i l l the ar ray w i th t e s t scores f o reach student .
15 f o r ( s tudent = 0 ; s tudent < NUM_STUDENTS; s tudent ++)16 {17 f o r ( t e s t = 0 ; t e s t < NUM_TESTS; t e s t ++)18 {19 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Exemple d’utilisation des boucles imbriquées avec untableau à deux dimensions (3)
25 / / Get the c lass average f o r each t e s t .26 f o r ( t e s t = 0 ; t e s t < NUM_TESTS; t e s t ++)27 {28 t o t a l = 0 ; / / Reset the accumulator .29 / / Sum a column .30 f o r ( s tudent = 0 ; s tudent < NUM_STUDENTS; s tudent ++)31 t o t a l += scores [ s tudent ] [ t e s t ] ;32 average = t o t a l / NUM_STUDENTS; / / Get the average .33 / / D isp lay the c lass average .34 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Tableaux à plus de deux dimensions
C++ vous permet aussi de créer des tableaux à plus dedeux dimensions pour modéliser les données contenuesdans plusieurs ensembles. L’exemple suivant est unedéfinition d’un tableau de trois dimensions.
25 double seats [ 3 ] [ 5 ] [ 8 ] ;
Tous ce que nous avons vus pour accéder et initialiserdes éléments d’un tableau à un ou deux dimensionspeuvent aisément appliqués à des tableaux de plus dedeux dimensions.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Tableaux à plus de deux dimensions
C++ vous permet aussi de créer des tableaux à plus dedeux dimensions pour modéliser les données contenuesdans plusieurs ensembles. L’exemple suivant est unedéfinition d’un tableau de trois dimensions.
25 double seats [ 3 ] [ 5 ] [ 8 ] ;
Tous ce que nous avons vus pour accéder et initialiserdes éléments d’un tableau à un ou deux dimensionspeuvent aisément appliqués à des tableaux de plus dedeux dimensions.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
Exercices1 Calculer la somme de tous les éléments d’un tableau à
deux dimensions.2 Calculer la somme (moyenne) des éléments de chaque
ligne (colonne) d’un tableau à deux dimensions.3 Chercher une valeur ainsi que son nombre d’occurrences
dans un tableau à deux dimensions.4 Trouver des éléments les plus élevées (max) et les plus
basses (min) d’un tableau à deux dimensions.5 Cette fois-ci, (max/max) pour une (ligne/colonne) donné
d’un tableau à deux dimensions.6 Permutation d’éléments entre deux différentes lignes
(colonnes) d’un tableau à deux dimensions.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
L’opérateur d’adresse (&)Sur un PC, généralement une variable de type:
char, occupe un (01) octet.short, occupe deux (02) octetsint, ocuppe quatre (04) octetslong et float, occupe huit (08) octets.
1 char l e t t e r ;2 shor t number ;3 f l o a t amount ;
letter number amount
1200 1201 1203
L’opérateur d’adresse &
Sachant que chaque octet en mémoire possède une adresse uniquea, l’opérateurd’adresse & retourne l’adresse mémoire du premier octet occupé par une variable.
aLes adresses des variables illustrées à la figure sont des valeurs arbitraires, quisont utilisées uniquement à des fins d’illustration.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
L’opérateur d’adresse (&)Sur un PC, généralement une variable de type:
char, occupe un (01) octet.short, occupe deux (02) octetsint, ocuppe quatre (04) octetslong et float, occupe huit (08) octets.
1 char l e t t e r ;2 shor t number ;3 f l o a t amount ;
letter number amount
1200 1201 1203
L’opérateur d’adresse &
Sachant que chaque octet en mémoire possède une adresse uniquea, l’opérateurd’adresse & retourne l’adresse mémoire du premier octet occupé par une variable.
aLes adresses des variables illustrées à la figure sont des valeurs arbitraires, quisont utilisées uniquement à des fins d’illustration.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Exemple d’utilisation des opérateurs & et sizeof
1 / / s i z e o f opera tor i s used to determine a v a r i a b l e ’ s s ize2 # inc lude 3 using namespace std ;4 i n t main ( )5 {6 i n t x = 25;7 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Variable pointeur (appelée aussi pointeur)
Déclaration
Pour définir un pointeur, il faut le nommer et indiquer le type de données de lavariable pour-laquelle va contenir son adresse mémoire.
Exemple de définition d’un pointeur.
1 i n t * p t r ;2 i n t * p t r ;
L’astérisque * devant1 le nom de la variable indique que ptr est un pointeur.Le type de données int indique que ptr peut être utilisé pour contenir l’adressemémoire d’une variable entière.
1Certains programmeurs préfèrent positionner l’astérisque * à côté du nom du typede données, plutôt que le nom de la variable
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Variable pointeur (appelée aussi pointeur)
Déclaration
Pour définir un pointeur, il faut le nommer et indiquer le type de données de lavariable pour-laquelle va contenir son adresse mémoire.
Exemple de définition d’un pointeur.
1 i n t * p t r ;2 i n t * p t r ;
L’astérisque * devant1 le nom de la variable indique que ptr est un pointeur.Le type de données int indique que ptr peut être utilisé pour contenir l’adressemémoire d’une variable entière.
1Certains programmeurs préfèrent positionner l’astérisque * à côté du nom du typede données, plutôt que le nom de la variable
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Variable pointeur (appelée aussi pointeur)
Déclaration
Pour définir un pointeur, il faut le nommer et indiquer le type de données de lavariable pour-laquelle va contenir son adresse mémoire.
Exemple de définition d’un pointeur.
1 i n t * p t r ;2 i n t * p t r ;
L’astérisque * devant1 le nom de la variable indique que ptr est un pointeur.Le type de données int indique que ptr peut être utilisé pour contenir l’adressemémoire d’une variable entière.
1Certains programmeurs préfèrent positionner l’astérisque * à côté du nom du typede données, plutôt que le nom de la variable
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Variable pointeur (appelée aussi pointeur)
Déclaration
Pour définir un pointeur, il faut le nommer et indiquer le type de données de lavariable pour-laquelle va contenir son adresse mémoire.
Exemple de définition d’un pointeur.
1 i n t * p t r ;2 i n t * p t r ;
L’astérisque * devant1 le nom de la variable indique que ptr est un pointeur.Le type de données int indique que ptr peut être utilisé pour contenir l’adressemémoire d’une variable entière.
1Certains programmeurs préfèrent positionner l’astérisque * à côté du nom du typede données, plutôt que le nom de la variable
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Enregistrer l’adresse d’une variable dans un pointeur
1 i n t x = 25; / / i n t v a r i a b l e2 i n t * p t r = n u l l p t r ; / / n u l l p t r i s supported by the
standard C++11 but you can rep lace i t w i th NULL or 0 .3 p t r = &x ; / / Store the address o f x i n p t r
0x7e00
Ptr
X
Adresse of x: 0x7e00
25
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Utilisation de l’opérateur indirect * (1).
Les pointeurs vous permet d’accéder indirectement2 et de modifier la variable pointée.
1 # inc lude 2 using namespace std ;3
4 i n t main ( )5 {6 i n t x = 25; / / i n t v a r i a b l e7 i n t * p t r = n u l l p t r ; / / Po in te r va r iab le , can po in t to
an i n t8 p t r = &x ; / / Store the address o f x i n p t r
2L’accès se fait via l’opérateur indirect (indirection operator ), qui est l’astérisque *.Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Utilisation de l’opérateur indirect * (2).
9 / / Use both x and p t r to d i sp lay the value i n x .10 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
La relation entre les tableaux et les pointeursLe nom d’un tableau, sans crochets ni indice, représente en fait l’adresse de départ dutableau. Cela signifie qu’un nom de tableau est vraiment un pointeur.
1 / / This program shows an ar ray name being dereferencedwi th the * opera tor .
2 # inc lude 3 using namespace std ;4 i n t main ( )5 {6 shor t numbers [ ] = {10 , 20 , 30 , 40 , 50 } ;7 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Accès aux données d’un tableau par l’opérateurindirect * (1)
1 # inc lude 2 using namespace std ;3 i n t main ( )4 {5 const i n t SIZE = 5; / / Size o f the ar ray6 i n t numbers [ SIZE ] ; / / Array o f i n t ege rs7 i n t count ; / / Counter v a r i a b l e8
9 / / Get values to s to re i n the ar ray .10 / / Use p o i n t e r no ta t i on ins tead of subsc r i p t s .11 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Accès aux données d’un tableau par l’opérateurindirect * (2)
// Display the values in the array. Use pointer notation instead of subscripts.
14 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Accès aux données d’un tableau par l’opérateurindirect * (2)
// Display the values in the array. Use pointer notation instead of subscripts.
14 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Accès aux données d’un tableau par l’opérateurindirect * (2)
// Display the values in the array. Use pointer notation instead of subscripts.
14 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Accès aux données d’un tableau par l’opérateurindirect * (2)
// Display the values in the array. Use pointer notation instead of subscripts.
14 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Tableaux vs pointeursLorsque vous travaillez avec des tableaux, rappelez-vousla règle suivante:
array [index] est équivalent à *(array + index)La seule différence entre les noms de tableaux et lespointeurs est que vous ne pouvez pas modifier l’adressepointée par un nom de tableau.
Soit les déclarations suivantes
1 double readings [ 2 0 ] , t o t a l s [ 2 0 ] ;2 double * dp t r = n u l l p t r ;
Instructions légales
1 dp t r = readings ;2 dp t r = t o t a l s ;
Instructions illégales
1 readings = t o t a l s ;2 t o t a l s = dp t r ;
Les noms des tableaux sont des pointeurs constants.Vous ne pouvez pas leur faire pointer autre chose que letableau qu’ils représentent.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Tableaux vs pointeursLorsque vous travaillez avec des tableaux, rappelez-vousla règle suivante:
array [index] est équivalent à *(array + index)La seule différence entre les noms de tableaux et lespointeurs est que vous ne pouvez pas modifier l’adressepointée par un nom de tableau.
Soit les déclarations suivantes
1 double readings [ 2 0 ] , t o t a l s [ 2 0 ] ;2 double * dp t r = n u l l p t r ;
Instructions légales
1 dp t r = readings ;2 dp t r = t o t a l s ;
Instructions illégales
1 readings = t o t a l s ;2 t o t a l s = dp t r ;
Les noms des tableaux sont des pointeurs constants.Vous ne pouvez pas leur faire pointer autre chose que letableau qu’ils représentent.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Tableaux vs pointeursLorsque vous travaillez avec des tableaux, rappelez-vousla règle suivante:
array [index] est équivalent à *(array + index)La seule différence entre les noms de tableaux et lespointeurs est que vous ne pouvez pas modifier l’adressepointée par un nom de tableau.
Soit les déclarations suivantes
1 double readings [ 2 0 ] , t o t a l s [ 2 0 ] ;2 double * dp t r = n u l l p t r ;
Instructions légales
1 dp t r = readings ;2 dp t r = t o t a l s ;
Instructions illégales
1 readings = t o t a l s ;2 t o t a l s = dp t r ;
Les noms des tableaux sont des pointeurs constants.Vous ne pouvez pas leur faire pointer autre chose que letableau qu’ils représentent.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Arithmétique des pointeurs (1)Certaines opérations mathématiques peuvent être effectuées sur des pointeurs (p. ex.,l’addition et la soustraction).
1 / / Using a p o i n t e r to d i sp lay the contents o f an ar ray .2 # inc lude 3 using namespace std ;4 i n t main ( )5 {6 const i n t SIZE = 8;7 i n t se t [ SIZE ] = {5 , 10 , 15 , 20 , 25 , 30 , 35 , 40 } ;8 i n t * numPtr = n u l l p t r ; / / Po in te r9 i n t count ; / / Counter v a r i a b l e f o r loops
10 / / Make numPtr po i n t to the set ar ray .11 numPtr = set ;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Arithmétique des pointeurs (2)
12 / / Use the p o i n t e r to d i sp lay the ar ray contents .13 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Opérateurs arithmétiques et de comparaison sur despointeurs
Les opérations arithmétiques autorisées avec des pointeurs
Les opérateurs ++ et - - peuvent être utilisés pour incrémenter ou décrémenterun pointeur.
Un entier peut être ajouté ou soustrait à un pointeur. Ceci peut être effectué avecles opérateurs + et - ou les opérateurs += et -=.
Un pointeur peut être soustrait d’un autre pointeur.
Les opérateurs relationnels pour comparer des pointeurs
Si une adresse mémoire vient avant une autre, la première adresse estconsidérée comme “ inférieure à” la seconde.Les opérateurs relationnels (< , , >= , == et !=) de C ++ peuvent êtreutilisés pour comparer les valeurs de pointeur.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Opérateurs arithmétiques et de comparaison sur despointeurs
Les opérations arithmétiques autorisées avec des pointeurs
Les opérateurs ++ et - - peuvent être utilisés pour incrémenter ou décrémenterun pointeur.
Un entier peut être ajouté ou soustrait à un pointeur. Ceci peut être effectué avecles opérateurs + et - ou les opérateurs += et -=.
Un pointeur peut être soustrait d’un autre pointeur.
Les opérateurs relationnels pour comparer des pointeurs
Si une adresse mémoire vient avant une autre, la première adresse estconsidérée comme “ inférieure à” la seconde.Les opérateurs relationnels (< , , >= , == et !=) de C ++ peuvent êtreutilisés pour comparer les valeurs de pointeur.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Opérateurs arithmétiques et de comparaison sur despointeurs
Les opérations arithmétiques autorisées avec des pointeurs
Les opérateurs ++ et - - peuvent être utilisés pour incrémenter ou décrémenterun pointeur.
Un entier peut être ajouté ou soustrait à un pointeur. Ceci peut être effectué avecles opérateurs + et - ou les opérateurs += et -=.
Un pointeur peut être soustrait d’un autre pointeur.
Les opérateurs relationnels pour comparer des pointeurs
Si une adresse mémoire vient avant une autre, la première adresse estconsidérée comme “ inférieure à” la seconde.Les opérateurs relationnels (< , , >= , == et !=) de C ++ peuvent êtreutilisés pour comparer les valeurs de pointeur.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Opérateurs arithmétiques et de comparaison sur despointeurs
Les opérations arithmétiques autorisées avec des pointeurs
Les opérateurs ++ et - - peuvent être utilisés pour incrémenter ou décrémenterun pointeur.
Un entier peut être ajouté ou soustrait à un pointeur. Ceci peut être effectué avecles opérateurs + et - ou les opérateurs += et -=.
Un pointeur peut être soustrait d’un autre pointeur.
Les opérateurs relationnels pour comparer des pointeurs
Si une adresse mémoire vient avant une autre, la première adresse estconsidérée comme “ inférieure à” la seconde.Les opérateurs relationnels (< , , >= , == et !=) de C ++ peuvent êtreutilisés pour comparer les valeurs de pointeur.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Opérateurs arithmétiques et de comparaison sur despointeurs
Les opérations arithmétiques autorisées avec des pointeurs
Les opérateurs ++ et - - peuvent être utilisés pour incrémenter ou décrémenterun pointeur.
Un entier peut être ajouté ou soustrait à un pointeur. Ceci peut être effectué avecles opérateurs + et - ou les opérateurs += et -=.
Un pointeur peut être soustrait d’un autre pointeur.
Les opérateurs relationnels pour comparer des pointeurs
Si une adresse mémoire vient avant une autre, la première adresse estconsidérée comme “ inférieure à” la seconde.Les opérateurs relationnels (< , , >= , == et !=) de C ++ peuvent êtreutilisés pour comparer les valeurs de pointeur.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs sur des objets constantsComment déclarer un pointeur qui pointe sur le tableau constant suivant?
1 const i n t SIZE = 6;2 const double payRates [ SIZE ] = { 18.55 , 17.45 ,3 12.85 , 14.97 ,4 10.35 , 18.89 } ;
Déclaration d’un pointeur sur un objet constant
Pour passer l’adresse du tableau payRates vers un pointeur, ce dernier doit êtredéclaré en tant que pointeur vers un const double.
1 const double * ra tes = payRates ;
const est appliqué à l’objet pointé par rates, pas au pointeur rates lui-même.Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs sur des objets constantsComment déclarer un pointeur qui pointe sur le tableau constant suivant?
1 const i n t SIZE = 6;2 const double payRates [ SIZE ] = { 18.55 , 17.45 ,3 12.85 , 14.97 ,4 10.35 , 18.89 } ;
Déclaration d’un pointeur sur un objet constant
Pour passer l’adresse du tableau payRates vers un pointeur, ce dernier doit êtredéclaré en tant que pointeur vers un const double.
1 const double * ra tes = payRates ;
const est appliqué à l’objet pointé par rates, pas au pointeur rates lui-même.Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs sur des objets constantsComment déclarer un pointeur qui pointe sur le tableau constant suivant?
1 const i n t SIZE = 6;2 const double payRates [ SIZE ] = { 18.55 , 17.45 ,3 12.85 , 14.97 ,4 10.35 , 18.89 } ;
Déclaration d’un pointeur sur un objet constant
Pour passer l’adresse du tableau payRates vers un pointeur, ce dernier doit êtredéclaré en tant que pointeur vers un const double.
1 const double * ra tes = payRates ;
const est appliqué à l’objet pointé par rates, pas au pointeur rates lui-même.Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Exemple d’un pointeur vers un objet constant
1 # inc lude # inc lude 2 using namespace std ;3 i n t main ( )4 { const i n t SIZE = 6;5 const double payRates [ SIZE ] = { 18.55 , 17.45 ,6 12.85 , 14.97 ,7 10.35 , 18 .89 } ;8 const double * ra tes = payRates ;9 / / Set numeric output f o r m a t t i n g .
10 cout
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs constantsOn peut utiliser le mot clé const pour définir un pointeur constant.
1 i n t value = 22;2 i n t * const p t r = &value ;
Différence entre pointeur sur un objet constant et pointeur constant
Un pointeur sur un objet constant pointe sur un élément constant. Lesdonnées sur lesquelles pointe le pointeur ne peuvent pas changer, mais lepointeur lui-même peut changer.
Avec un pointeur constant, c’est le pointeur lui-même qui est constant. Une foisque le pointeur est initialisé avec une adresse, il ne peut plus pointer vers uneautre adresse mémoire.
1 * p t r = 0 ; / /We can change the data t h a t p t r po in t s to .2 p t r = 0 ; / /ERROR! ! Cannot change the contents o f p t r .
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs constantsOn peut utiliser le mot clé const pour définir un pointeur constant.
1 i n t value = 22;2 i n t * const p t r = &value ;
Différence entre pointeur sur un objet constant et pointeur constant
Un pointeur sur un objet constant pointe sur un élément constant. Lesdonnées sur lesquelles pointe le pointeur ne peuvent pas changer, mais lepointeur lui-même peut changer.
Avec un pointeur constant, c’est le pointeur lui-même qui est constant. Une foisque le pointeur est initialisé avec une adresse, il ne peut plus pointer vers uneautre adresse mémoire.
1 * p t r = 0 ; / /We can change the data t h a t p t r po in t s to .2 p t r = 0 ; / /ERROR! ! Cannot change the contents o f p t r .
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs constantsOn peut utiliser le mot clé const pour définir un pointeur constant.
1 i n t value = 22;2 i n t * const p t r = &value ;
Différence entre pointeur sur un objet constant et pointeur constant
Un pointeur sur un objet constant pointe sur un élément constant. Lesdonnées sur lesquelles pointe le pointeur ne peuvent pas changer, mais lepointeur lui-même peut changer.
Avec un pointeur constant, c’est le pointeur lui-même qui est constant. Une foisque le pointeur est initialisé avec une adresse, il ne peut plus pointer vers uneautre adresse mémoire.
1 * p t r = 0 ; / /We can change the data t h a t p t r po in t s to .2 p t r = 0 ; / /ERROR! ! Cannot change the contents o f p t r .
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs constants sur des objets constants
Vous pouvez également avoir des pointeurs constants sur desobjets constants.
1 i n t value = 22;2 const i n t * const p t r = &value ;
ptr est un pointeur constant, nous ne pouvons pas écrirede code qui fasse pointer ptr vers une autre variable (vousne pouvez pas changer le contenu de ptr ).ptr est un pointeur vers un objet constant, nous nepouvons pas l’utiliser pour changer le contenu de lavariable value.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs constants sur des objets constants
Vous pouvez également avoir des pointeurs constants sur desobjets constants.
1 i n t value = 22;2 const i n t * const p t r = &value ;
ptr est un pointeur constant, nous ne pouvons pas écrirede code qui fasse pointer ptr vers une autre variable (vousne pouvez pas changer le contenu de ptr ).ptr est un pointeur vers un objet constant, nous nepouvons pas l’utiliser pour changer le contenu de lavariable value.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Pointeurs constants sur des objets constants
Vous pouvez également avoir des pointeurs constants sur desobjets constants.
1 i n t value = 22;2 const i n t * const p t r = &value ;
ptr est un pointeur constant, nous ne pouvons pas écrirede code qui fasse pointer ptr vers une autre variable (vousne pouvez pas changer le contenu de ptr ).ptr est un pointeur vers un objet constant, nous nepouvons pas l’utiliser pour changer le contenu de lavariable value.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Sommaire1 Les tableaux (Arrays)
Déclaration d’un tableauTaille mémoire occupée par un tableauAccès aux éléments d’un tableauInitialisation des éléments d’un tableauLa boucle for à base d’intervalleTableaux à plusieurs dimensions
2 Les pointeurs (Pointers)Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Allocation dynamique de la mémoire
Supposons que vous souhaitiez écrire un programme decalcul de la moyenne générale d’un étudiant donné pourun nombre quelconque de modules.
Évidemment, le programme serait très polyvalent, maiscomment conserver en mémoire les notes des moyennesdes modules concernés si vous ne connaissez pas sonnombre (c-à-d. nombre de variables à définir )?Tout simplement, vous permettez au programme de créerses propres variables “à la volée”.
Cette opération s’appelle l’allocation dynamique demémoire (dynamic memory allocation) et n’est possibleque par l’utilisation de pointeurs.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Allocation dynamique de la mémoire
Supposons que vous souhaitiez écrire un programme decalcul de la moyenne générale d’un étudiant donné pourun nombre quelconque de modules.
Évidemment, le programme serait très polyvalent, maiscomment conserver en mémoire les notes des moyennesdes modules concernés si vous ne connaissez pas sonnombre (c-à-d. nombre de variables à définir )?Tout simplement, vous permettez au programme de créerses propres variables “à la volée”.
Cette opération s’appelle l’allocation dynamique demémoire (dynamic memory allocation) et n’est possibleque par l’utilisation de pointeurs.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Allocation dynamique de la mémoire
Supposons que vous souhaitiez écrire un programme decalcul de la moyenne générale d’un étudiant donné pourun nombre quelconque de modules.
Évidemment, le programme serait très polyvalent, maiscomment conserver en mémoire les notes des moyennesdes modules concernés si vous ne connaissez pas sonnombre (c-à-d. nombre de variables à définir )?Tout simplement, vous permettez au programme de créerses propres variables “à la volée”.
Cette opération s’appelle l’allocation dynamique demémoire (dynamic memory allocation) et n’est possibleque par l’utilisation de pointeurs.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
Allocation dynamique de la mémoire
Supposons que vous souhaitiez écrire un programme decalcul de la moyenne générale d’un étudiant donné pourun nombre quelconque de modules.
Évidemment, le programme serait très polyvalent, maiscomment conserver en mémoire les notes des moyennesdes modules concernés si vous ne connaissez pas sonnombre (c-à-d. nombre de variables à définir )?Tout simplement, vous permettez au programme de créerses propres variables “à la volée”.
Cette opération s’appelle l’allocation dynamique demémoire (dynamic memory allocation) et n’est possibleque par l’utilisation de pointeurs.
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
L’opérateur new (1)Supposant qu’un programme a un pointeur vers un entier.
1 i n t * i p t r = n u l l p t r ;
L’instruction suivante demande à l’ordinateur d’allouer suffisamment demémoire pour une nouvelle variable de type int.
1 i p t r = new i n t ;
L’opérande de l’opérateur new est le type de données de la variable en cours decréation. iptr contiendra l’adresse mémoire nouvellement allouée.Une valeur peut être stockée dans cette variable en déréférencant le pointeur iptr
1 * i p t r = 25;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
L’opérateur new (1)Supposant qu’un programme a un pointeur vers un entier.
1 i n t * i p t r = n u l l p t r ;
L’instruction suivante demande à l’ordinateur d’allouer suffisamment demémoire pour une nouvelle variable de type int.
1 i p t r = new i n t ;
L’opérande de l’opérateur new est le type de données de la variable en cours decréation. iptr contiendra l’adresse mémoire nouvellement allouée.Une valeur peut être stockée dans cette variable en déréférencant le pointeur iptr
1 * i p t r = 25;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
L’opérateur new (1)Supposant qu’un programme a un pointeur vers un entier.
1 i n t * i p t r = n u l l p t r ;
L’instruction suivante demande à l’ordinateur d’allouer suffisamment demémoire pour une nouvelle variable de type int.
1 i p t r = new i n t ;
L’opérande de l’opérateur new est le type de données de la variable en cours decréation. iptr contiendra l’adresse mémoire nouvellement allouée.Une valeur peut être stockée dans cette variable en déréférencant le pointeur iptr
1 * i p t r = 25;
Dr. Fateh SEGHIR Tableaux et pointeurs
Les tableaux (Arrays)Les pointeurs (Pointers)
Obtenir l’adresse d’une variableCréation et utilisation des pointeursLa relation entre les tableaux et les pointeursArithmétique, comparaison et initialisation des pointeursPointeurs const/non-const sur objets const/non-constAllocation dynamique de la mémoire
L’opérateur new (1)Supposant qu’un programme a un pointeur vers un entier.
1 i n t * i p t r = n u l l p t r ;
L’instruction suivante demande à l’ordinateur d’allouer suffisamment demémoire po
Top Related