C pointeurs/Pointeurs d'entiers
Introduction
modifierPrésentation
modifierNous allons voir une utilisation des pointeurs d'entiers.
Le but
modifierNous voulons une fonction qui retourne les coordonnées d'un point, et un code d'erreur qui nous informe si le point est bien dans les intervalles choisis.
Pointeur de int
modifierPremier exemple sans le code d'erreur
modifier- L'initialisation du point ce fait par des constantes, cela pourrait être des fonctions.
/* ------------------------------------ */
/* Save as : c01.c */
/* ------------------------------------ */
#include <stdio.h>
#include <math.h>
/* ------------------------------------ */
typedef struct
{
double x;
double y;
}point2d, *Ppoint2d;
/* ------------------------------------ */
point2d i_value(void)
{
point2d p={9,9};
return(p);
}
/* ------------------------------------ */
int main(void)
{
point2d p = i_value();
printf("p(%f,%f)",p.x,p.y);
printf("\n\n Press return to continue");
getchar();
return 0;
}
La fonction retourne déjà le point. Nous allons utiliser un pointeur pour retourner le code d'erreur.
Deuxième exemple avec le code d'erreur
modifier/* ------------------------------------ */
/* Save as : c02.c */
/* ------------------------------------ */
#include <stdio.h>
#include <math.h>
/* ------------------------------------ */
typedef struct
{
double x;
double y;
}point2d, *Ppoint2d;
/* ------------------------------------ */
point2d i_value(
int *e/* On declare un pointeur d'entier*/
)
{
point2d p={9,9};
(*e) = 0;/* On donne une valeur a l'entier */
if(fabs(p.x)<10 && fabs(p.y)<10)
(*e)++;
return(p);
}
/* ------------------------------------ */
int main(void)
{
int e;
point2d p = i_value(&e);/* On passe l'adresse de e */
if(e) printf("e= %d p(%f,%f)",e,p.x,p.y);
else printf("e= %d error",e);
printf("\n\n Press return to continue");
getchar();
return 0;
}
- Essayer :
- point2d p={ -9, +9};
- point2d p={-10, +9};
- point2d p={ -9,+10};
- point2d p={-11,+11};
Pointeurs de double
modifierExemple avec le code d'erreur
modifier/* ------------------------------------ */
/* Save as : c03.c */
/* ------------------------------------ */
#include <stdio.h>
#include <math.h>
/* ------------------------------------ */
typedef struct
{
double x;
double y;
}point2d, *Ppoint2d;
/* ------------------------------------ */
point2d i_value(
double *e/* On declare un pointeur de double */
)
{
point2d p={9,9};
(*e) = 0;/* On donne une valeur au double */
if(fabs(p.x)<10 && fabs(p.y)<10)
(*e) +=1;
return(p);
}
/* ------------------------------------ */
int main(void)
{
double e;
point2d p = i_value(&e);/* On passe l'adresse de e */
if(e) printf("e= %f p(%f,%f)",e,p.x,p.y);
else printf("e= %f error",e);
printf("\n\n Press return to continue");
getchar();
return 0;
}
- Essayer :
- point2d p={ -9, +9};
- point2d p={-10, +9};
- point2d p={ -9,+10};
- point2d p={-11,+11};
Pointeurs de char
modifierExemple avec le code d'erreur
modifier/* ------------------------------------ */
/* Save as : c04.c */
/* ------------------------------------ */
#include <stdio.h>
#include <math.h>
/* ------------------------------------ */
typedef struct
{
double x;
double y;
}point2d, *Ppoint2d;
/* ------------------------------------ */
point2d i_value(
char *e
)
{
point2d p={9,9};
(*e) = 'b';
if(fabs(p.x)<10 && fabs(p.y)<10)
(*e)--;
return(p);
}
/* ------------------------------------ */
int main(void)
{
char e;
point2d p = i_value(&e);
if(e=='a') printf("e= %c p(%f,%f)",e,p.x,p.y);
else printf("e= %c error",e);
printf("\n\n Press return to continue");
getchar();
return 0;
}
- Essayer :
- point2d p={ -9, +9};
- point2d p={-10, +9};
- point2d p={ -9,+10};
- point2d p={-11,+11};