Vous êtes sur la page 1sur 2

Université Nangui Abrogoua

Séance de TP2-L2-Math-Info
Laboratoire de mathématiques et Informatiques

Les pointeurs

Objectif : Comprendre et utiliser les pointeurs

Une valeur de type pointeur repère une variable. En pratique cela signifie qu’une valeur de
type pointeur est l’adresse d’une variable. Pour déclarer une variable pointeur vers un type
de base (int, double, float, …) : partir de la déclaration d’une variable ayant un type de base ;
Ajouter le signe * devant le nom de la variable.

int *pi // pi est un pointeur vers un int


char *pc // pc est un pointeur vers un char
double *pd // pd est un pointeur vers un char

L’opérateur & appliquée à une variable délivre l’adresse de celle ci cette adresse pourra être
affectée à une variable de type pointeur.

int i,j ; //
int *pi ; // pi pointe vers un entier
pi=&i ; // le pointeur pi repère la variable i
*pi=2 ; // initialisation de la valeur pointée par pi
j=*pi+1 ; // une utilisation de la valeur pointée par pi

Exercice 1

1-) Déclarer un entier i et un pointeur vers un entier ;


2-) Initialiser l’entier à une valeur arbitraire et faire pointer p vers i
2-) Imprimer la valeur de i ;
3-) Modifier l’entier pointé par p (en utilisant p, pas i)
4-) Imprimer la valeur de i

Pointeurs et Tableaux

Soient p une valeur pointeur vers des objets de type T (int, double, char, …) et Tab un
tableau dont les éléments sont du même type T.
L’instruction
int Tab[N] ;
int *p, *q ;
p=&Tab[0] ; // p repère le premier élément de Tab ;
q=p+(N-1) ;
De manière générale, si p repère l’élément d’indice i du tableau Tab alors p+j est une valeur
de type pointeur vers T qui repère l’élément d’indice i+j du tableau Tab (en supposant qu’il
existe).

Exercice 2

Déclarer et initialiser statiquement un tableau d’entiers Tab avec des valeurs dont certaines
seront nulles. Ecrire une procédure qui parcoure le tableau Tab et qui imprime les index des
éléments nuls du tableau sans utiliser aucune variable de type entier.

Pointeurs et Passage de paramètres

En ce qui concerne le passage de paramètres à une procédure le programmeur à deux


besoins fondamentaux :
Soit l’on désir passer une valeur qui sera exploitée par l’algorithme de la procédure (Cos(A)).
Une telle façon de passer un paramètre s’appelle du passage par valeur.
Soit il désire passer une référence à une variable de manière à permettre à la procédure de
modifier la valeur de cette variable. C’est ceux dont on a besoin si l’on souhaite quand on écrit
une procédure Prod réalisant le produit de deux élément A et B et dont le résultat est à
stocker dans une variable C. Prod à besoin des valeurs A et B et d’une référence vers la
variable C. Une t’elle façon de passer un paramètre s’appelle du passage par adresse.
En C, la solution consiste dans ce cas à déclarer le paramètre comme étant un pointeur.

Exercice

On va coder un algorithme de cryptage simple on choisit un décalage par exemple Ainsi une
lettre a sera remplacé par une lettre f, une lettre b par g, etc. On ne cryptera que les lettres
majuscules et minuscules sans toucher à la ponctuation ni a la mise en page caractères blancs.

1-) déclarer un tableau de caractères MSG initialisé avec un message en clair.

2-) écrire une procédure CRYPT de cryptage d’un caractère qui sera passé par adresse.

3-) écrire le main qui activera le CRYPT sur l’ensemble de méssage et imprimera le résultat.

Vous aimerez peut-être aussi