Вы находитесь на странице: 1из 4

Programmation C++ (dbutant)/Les pointeurs 1

...........................Les pointeurs..................................
Dclaration
Dclaration d'un pointeur : int * x;
x est un pointeur vers un entier : x contient l'adresse en mmoire o est stock un entier. Initialement le pointeur
n'est pas initialis : x vaut donc n'importe quelle adresse en RAM.

L'oprateur &
Si a est un entier, &a renvoie l'adresse relle en mmoire de la variable a.
On peut donc crire :

int a;
int *x;
x=&a;

Dans ce bout de programme, on a copi l'adresse o est stocke en mmoire la variable a dans le pointeur x.
Attention ! On a copi une adresse vers un entier, pas un entier.
On dit que x pointe vers la variable a.
Exemple 1 : utilisation de pointeurs
#include<iostream>
using namespace std;

int main()
{
int a;
int *x,*y;

a=90;
x=&a;
cout << *x << endl;

*x=100;
cout << "a vaut : " << a << endl;

L'oprateur
y=x; de drfrencement *
Si x est*y=80;
un pointeur vers un entier, *x sera l'entier point par x.
cout <<: "a vaut : " << a << endl;
Ainsi si on crit

int a=25;
return 0;
int *x;
}
x=&a;
*x=25;

Comme x est un pointeur vers a, *x dsigne la variable a.


L'instruction *x=25; copie un entier dans un autre et non une adresse. On copie donc l'entier 25 dans la variable
a.
Explications
Dans cet exemple, on dfinit un entier a et deux pointeurs vers des entiers x et y.
a est initialise la valeur 90.
Programmation C++ (dbutant)/Les pointeurs 2
Aprs l'instruction x=&a, x pointe vers a. x contient l'adresse en mmoire o est stocke la variable a.
L'instruction *x=100; modifie le contenu de la variable a et met la valeur 100 dans cette variable.
L'instruction y=x copie le pointeur x dans le pointeur y. Aprs cette instruction, les deux pointeurs x et y pointent
vers la mme variable a.
Lorsqu'on crit *y=80, on modifie alors le contenu de la variable a qui vaut alors 80.
On voit donc sur cet exemple qu'un pointeur permet de modifier indirectement le contenu d'une variable.
Excution
Lorsqu'on excute le programme voici ce qu'on obtient l'cran :

90
a vaut : 100
a vaut : 80

.........................Les fonctions......................................
Lorsqu'on a un ensemble de lignes de code qui doivent tre excutes diffrents endroits dans un programme, au
lieu de rcrire les mmes lignes de code, il est intressant de crer des fonctions.
Ecrire une fonction
Syntaxe : type identificateur(paramtres) { Corps de la fonction }
A chaque appel de la fonction on excute le corps de la fonction.
L'identificateur est le nom de la fonction.
La fonction peut avoir des paramtres.
La fonction peut renvoyer une valeur de type type.

Appel une fonction


Lors de l'appel de la fonction, le programme excute la totalit des instructions du corps de la fonction, puis reprend
le programme juste aprs l'appel de la fonction.
Exemple : une fonction qui renvoie une valeur
#include<iostream>
using namespace std;

int b(int i, int j)


{

int k;
k = i*i + j*j;
return k;
}

int main()
{
int a;
a = b(3,4);
cout<<"Le resultat vaut : "<<a<<endl;
return 0;
}
Programmation C++ (dbutant)/Les fonctions 3

Explications
Lors de l'appel a=b(3,4);

3 et 4 sont respectivement recopis dans les variables i et j.


On excute le corps de la fonction (qui contient une variable locale k)
return k permet d'arrter l'excution de la fonction en renvoyant la valeur de k qui est recopie dans a.
L'environnement de la fonction main ne comprend que la variable a : on ne peut pas utiliser les variables i, j et
k dans la fonction main.
L'environnement de la fonction b comprend les variables i,j et k : on ne peut pas utiliser a dans la fonction b.
La sparation des environnements permet de mieux structurer les applications.
Excution :
Lorsqu'on excute le programme voici ce qu'on obtient l'cran :
Le resultat vaut : 25

.............................Les structures................................
Ide
En gnral, pour reprsenter en C++ des donnes, il faut plusieurs variables.
Exemple :
- pour reprsenter un point, il faut une abscisse et une ordonne.
- pour reprsenter une fraction, il faut un numrateur et un dnominateur .
- pour reprsenter une liste de notes, il faut un nombre de notes et un tableau d'entiers ...
Les structures
On va crer de nouveaux types qui regroupent plusieurs variables. D'apparence anodine, cette ide est extrmement
puissante.
Exemple :

struct point
{
double x,y;
};

Variable de type structur


On peut maintenant dfinir des variables de type point .
Par exemple :
point a , b;
a contient 2 rels appels a.x et a.y.
L'abscisse du point a sera note a.x.
a.x est de type double.
L'ordonne du point b sera note b.y, de type double galement.
a.x et a.y peuvent tre utiliss pour des affectations, des entres-sorties, comme toute variable de type double.
Programmation C++ (dbutant)/Les structures 4

Exemple 1 : le type point


#include<iostream>
using namespace std;

struct point
{
double x,y;
};

int main()
{
point a,b,c;

a.x=3.2;
a.y=6.4;

cout << "Tapez l'abscisse de b : ";


cin >> b.x;

cout << "Tapez l'ordonne de b : ";


cin >> b.y;

c.x = (b.x + a.x) / 2;


c.y = (b.y + a.y) / 2;

cout << "Abscisse de c : " << c.x << endl;


cout << "Ordonne de c : " << c.y << endl;

return 0;
}

Explications
Dans cet exemple, nous dfinissons une structure point compose de 2 rels x et y.
Dans la fonction main, on dfinit 3 points a,b et c.
On fixe les coordonnes du point a (3.2,6.4).
On demande l'utilisateur de saisir les coordonnes du point b.
On calcule dans c les coordonnes du milieu du segment [ab].
On affiche finalement les coordonnes du point c.
Excution
Lorsqu'on excute le programme voici ce qu'on obtient l'cran :
Tapez l'abscisse de b : 5.8
Tapez l'ordonne de b : 3.6
Abscisse de c : 4.5
Ordonne de c : 5.0