Les pointeurs en C. main () { float valeur; void* pointeur; } pointeur : valeur :

Preview:

Citation preview

Les pointeurs en C.

main (){

float valeur;void* pointeur;

}pointeur :

valeur :

Les pointeurs en C.

pointeur :

main (){

float valeur;void* pointeur;

pointeur = &valeur;}

valeur :

main (){

int nombre;float valeur;void* pointeur;

pointeur = &valeur;}

pointeur :

valeur :

nombre :

Les pointeurs en C.

main (){

int nombre;float valeur;void* pointeur;

pointeur = &valeur;pointeur = &nombre;

}

pointeur :

valeur :

nombre :

Les pointeurs en C.

Allocation de mémoire en C++ : new et delete.class Point{

int x, y;};

main (){

Point* p1;Point* p2;

p1 = new Point;delete p1;

}

Définition de la classe Point.

Allocation de mémoire en C++ : new et delete.

Déclaration de deux pointeurssur des objets Point.

class Point{

int x, y;};

main (){

Point* p1;Point* p2;

p1 = new Point;delete p1;

}

Allocation de mémoire en C++ : new et delete.

Allocation d'un objet Point : p1 le désigne.

class Point{

int x, y;};

main (){

Point* p1;Point* p2;

p1 = new Point;delete p1;

}

Allocation de mémoire en C++ : new et delete.

Libération de la mémoire. p1 nedésigne plus rien.

class Point{

int x, y;};

main (){

Point* p1;Point* p2;

p1 = new Point;delete p1;

}

Allocation de mémoire en C++ : new et delete.

p1 : ?

p2 : ?

class Point{

int x, y;};

main (){

Point* p1;Point* p2;

p1 = new Point;delete p1;

}

p1 :

p2 : ?

Allocation de mémoire en C++ : new et delete.class Point{

int x, y;};

main (){

Point* p1;Point* p2;

p1 = new Point;delete p1;

}

p1 :

p2 : ?

Allocation de mémoire en C++ : new et delete.class Point{

int x, y;};

main (){

Point* p1;Point* p2;

p1 = new Point;delete p1;

}

Des ensembles : tableaux et listes.

Des objets alloués en mémoire :

main (){

Point* p;

p = new Point;p = new Point;p = new Point;p = new Point;p = new Point;

}

Des ensembles : tableaux et listes.

main (){

Point p[10];

}

Des ensembles : tableaux et listes.

main (){

Point* p[10];

p[0] = new Point;}

Des ensembles : tableaux et listes.

main (){

Point* p[10];

p[0] = new Point;p[1] = new Point;

}

Des ensembles : tableaux et listes.

main (){

std::list<Point> points;}

Des ensembles : tableaux et listes.

main (){

std::list<Point> points;

Point p;

p.x = 10;p.y = 12;

points.push_back (p);}

Des ensembles : tableaux et listes.main (){

std::list<Point> points;

Point p;

p.x = 10;p.y = 12;

points.push_back (p);

p.x = 11;p.y = 13;

points.push_back (p);}

Des ensembles : tableaux et listes.main (){

std::list<Point> points;

for (i = 0; i < 10 ; i++){ Point p;

p.x = i; p.y = i+1;

points.push_back (p);}

}

Des ensembles : tableaux et listes.main (){

std::list<Point*> points;

for (i = 0; i < 10 ; i++){ Point* p = new Point;

p->x = i; p->y = i+1;

points.push_back (p);}

}

Une liste multiforme : problème

Polygone Point Ligne Ligne

x, y x1, y1x2, y2

x1, y1x2, y2x1, y1

x2, y2...xn, yn

Une liste multiforme : construction

Polygone Point Ligne Ligne

x, y x1, y1x2, y2

x1, y1x2, y2x1, y1

x2, y2...xn, yn

ref ref ref ref

Une liste multiforme.

? ? ? ?

ref ref ref ref

Une liste multiforme.

Figure Figure Figure Figure

ref ref ref ref

Une liste multiforme.

Figure

Polygone Point Ligne Ligne

x, y x1, y1x2, y2

x1, y1x2, y2x1, y1

x2, y2...xn, yn

Une liste multiforme.

Figure

Polygone Point Ligne Ligne

x, y x1, y1x2, y2

x1, y1x2, y2x1, y1

x2, y2...xn, yn

couleur

Une liste dans une structure.class Polygone{ int x1, y1; int x2, y2; int x3, y3; ...};

main (){

Polygone poly;

poly.x1 = ...;poly.y1 = ...;etc...

}

Une liste dans une structure.class Polygone{ std::list<Point> points;};

main (){

Polygone poly;

poly.points.push_back (1,2);Poly.points.push_back (2,5);etc...

}