Documente Academic
Documente Profesional
Documente Cultură
Les pointeurs
Pointeurs et fonctions
Pointeurs et tableaux
Structures de données en C
Laila AMIR
Laila AMIR
Introduction
Les pointeurs
Pointeurs et fonctions
Pointeurs et tableaux
Plan
1 Introduction
Intérêt des pointeurs
2 Les pointeurs
Notion d’un pointeur
Les opérateurs de base &, *
Déclaration d’un pointeur
Initialisation d’un pointeur
Accéder à une variable pointée
3 Pointeurs et fonctions
Portée d’une variable
Passage de paramètres par valeur ou par adresse
4 Pointeurs et tableaux
Pointeurs et tableaux à une dimension
Pointeurs et tableaux à plusieurs dimensions
Laila AMIR
Introduction
Les pointeurs
Intérêt des pointeurs
Pointeurs et fonctions
Pointeurs et tableaux
Outline
1 Introduction
Intérêt des pointeurs
2 Les pointeurs
Notion d’un pointeur
Les opérateurs de base &, *
Déclaration d’un pointeur
Initialisation d’un pointeur
Accéder à une variable pointée
3 Pointeurs et fonctions
Portée d’une variable
Passage de paramètres par valeur ou par adresse
4 Pointeurs et tableaux
Pointeurs et tableaux à une dimension
Pointeurs et tableaux à plusieurs dimensions
Laila AMIR
Introduction
Les pointeurs
Intérêt des pointeurs
Pointeurs et fonctions
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs
Intérêt des pointeurs
Pointeurs et fonctions
Pointeurs et tableaux
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Outline
1 Introduction
Intérêt des pointeurs
2 Les pointeurs
Notion d’un pointeur
Les opérateurs de base &, *
Déclaration d’un pointeur
Initialisation d’un pointeur
Accéder à une variable pointée
3 Pointeurs et fonctions
Portée d’une variable
Passage de paramètres par valeur ou par adresse
4 Pointeurs et tableaux
Pointeurs et tableaux à une dimension
Pointeurs et tableaux à plusieurs dimensions
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Un pointeur est une variable spéciale qui peut contenir l’adresse d’une
autre variable.
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Remarque :
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
L’opérateurs : &, *
L’opérateur ’adresse de’ : &
& NomVariable
fournit l’adresse de la variable NomVariable
On a déjà utilisé l’opérateur & dans la fonction scanf, pour désigner
l’adresse de la variable dans laquelle on veut stocker une valeur.
Exemple :
int N;
printf(”Entrez un nombre entier : ”);
scanf(”%d”, &N);
L’opérateur ’contenu de’ : *
* NomPointeur
désigne le contenu de l’adresse référencée par le pointeur NomPointeur
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Représentation schématique
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Exemple 2
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Exemple 2 (suite)
=>
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Type * NomPointeur;
déclare un pointeur NomPointeur qui peut recevoir des adresses de
variables du type Type.
NomPointeur = &nom-de-la-variable-pointee;
Exemple :
int *p1;
int a = 2;
p1 = &a;
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Exemple :
int *p1;
int a = 2;
p1 = &a;
*p1 = 10;
Après ces instructions, le contenu de la variable a sera 10.
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Exemple complet
#include <stdio.h>
int main(){
int a, b, c;
int *x, *y;
a = 98; Exécution :
x = &a;
c = *x + 5; La variable b vaut 108
y = &b; La variable c vaut 103
*y = a + 10;
printf(”La variable b vaut :%d ”, b);
printf(”La variable c vaut :%d”, c);
return 0;
}
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Explications :
Dans ce programme, on déclare 3 variables a, b et c. On déclare ensuite 2
pointeurs vers des entiers x et y. a est initialisé à 98.
x=&a; permet de mettre dans le un pointeur x l’adresse de a.
*x est la variable pointée par x. a vaut donc 98 après évaluation.
c=*x+5; permet donc de transférer 98+5 donc 103 dans la variable c.
y=&b permet de mettre dans la variable y l’adresse de la variable b. y
est désormais un pointeur vers b.
a+10 vaut 98+10 donc 108.
*y=a+10; permet de transférer dans la variable pointée par y la
valeur de a+10, c’est-à-dire 108. On stocke donc 108 dans b, de
manière indirecte via le pointeur y.
on affiche ensuite les valeurs de b et c c-à-d respect. 108 et 103.
Laila AMIR
Notion d’un pointeur
Introduction
Les opérateurs de base &, *
Les pointeurs
Déclaration d’un pointeur
Pointeurs et fonctions
Initialisation d’un pointeur
Pointeurs et tableaux
Accéder à une variable pointée
Le pointeur NUL
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Outline
1 Introduction
Intérêt des pointeurs
2 Les pointeurs
Notion d’un pointeur
Les opérateurs de base &, *
Déclaration d’un pointeur
Initialisation d’un pointeur
Accéder à une variable pointée
3 Pointeurs et fonctions
Portée d’une variable
Passage de paramètres par valeur ou par adresse
4 Pointeurs et tableaux
Pointeurs et tableaux à une dimension
Pointeurs et tableaux à plusieurs dimensions
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Remarque :
Les variables globales déclarés après les includes sont visibles et
modifiables de partout et leur durée de vie celle du programme
=> A manipuler avec précaution (dangereux!).
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Remarque :
Les variables globales déclarés après les includes sont visibles et
modifiables de partout et leur durée de vie celle du programme
=> A manipuler avec précaution (dangereux!).
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Une variable globale peut également être visible dans des fonctions
écrites dans d’autres fichiers sources du programme.
Pour cela, il faut rédeclarer son prototype dans l’autre fichier en
utilisant le mot clé extern.
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Exemple
#include <stdio.h>
double x;// Variables globales
int N;
int f1(){
int N; // variable locale masque la variable globale de même nom
int i = 0; // autre variable locale
while(..){
int N; // N locale, masque l’autre N locale & globale
...
}
x = ...; // Utilisation de la variable globale x (déconseillé)
}
int main(){
// dans le main, x et N sont accessibles mais pas i
}
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Explication
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Comme nous l’avons constaté ci-dessus, une fonction n’obtient que les
valeurs de ses paramètres. Pour changer la valeur d’une variable de la
fonction appelante, nous allons procéder comme suit :
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Portée d’une variable
Pointeurs et fonctions Passage de paramètres par valeur ou par adresse
Pointeurs et tableaux
Explication
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Outline
1 Introduction
Intérêt des pointeurs
2 Les pointeurs
Notion d’un pointeur
Les opérateurs de base &, *
Déclaration d’un pointeur
Initialisation d’un pointeur
Accéder à une variable pointée
3 Pointeurs et fonctions
Portée d’une variable
Passage de paramètres par valeur ou par adresse
4 Pointeurs et tableaux
Pointeurs et tableaux à une dimension
Pointeurs et tableaux à plusieurs dimensions
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Pointeurs et tableaux 1D
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Résumé
Et si P = tab, alors
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
#define N 5
int tab[5] = {0, 1, 4, 20, 7};
main(){
int *P;
for (P =tab; P < tab+N; P++)
printf(”%d \n”, *P);
}
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Laila AMIR
Introduction
Les pointeurs Pointeurs et tableaux à une dimension
Pointeurs et fonctions Pointeurs et tableaux à plusieurs dimensions
Pointeurs et tableaux
Laila AMIR