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

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

Embed Size (px)

Citation preview

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

Les pointeurs en C.

main (){

float valeur;void* pointeur;

}pointeur :

valeur :

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

Les pointeurs en C.

pointeur :

main (){

float valeur;void* pointeur;

pointeur = &valeur;}

valeur :

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

main (){

int nombre;float valeur;void* pointeur;

pointeur = &valeur;}

pointeur :

valeur :

nombre :

Les pointeurs en C.

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

main (){

int nombre;float valeur;void* pointeur;

pointeur = &valeur;pointeur = &nombre;

}

pointeur :

valeur :

nombre :

Les pointeurs en C.

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

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.

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

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;

}

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

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;

}

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

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;

}

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

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;

}

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

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;

}

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

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;

}

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

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;

}

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

Des ensembles : tableaux et listes.

main (){

Point p[10];

}

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

Des ensembles : tableaux et listes.

main (){

Point* p[10];

p[0] = new Point;}

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

Des ensembles : tableaux et listes.

main (){

Point* p[10];

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

}

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

Des ensembles : tableaux et listes.

main (){

std::list<Point> points;}

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

Des ensembles : tableaux et listes.

main (){

std::list<Point> points;

Point p;

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

points.push_back (p);}

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

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);}

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

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);}

}

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

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);}

}

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

Une liste multiforme : problème

Polygone Point Ligne Ligne

x, y x1, y1x2, y2

x1, y1x2, y2x1, y1

x2, y2...xn, yn

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

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

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

Une liste multiforme.

? ? ? ?

ref ref ref ref

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

Une liste multiforme.

Figure Figure Figure Figure

ref ref ref ref

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

Une liste multiforme.

Figure

Polygone Point Ligne Ligne

x, y x1, y1x2, y2

x1, y1x2, y2x1, y1

x2, y2...xn, yn

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

Une liste multiforme.

Figure

Polygone Point Ligne Ligne

x, y x1, y1x2, y2

x1, y1x2, y2x1, y1

x2, y2...xn, yn

couleur

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

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

main (){

Polygone poly;

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

}

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

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...

}