Introduction au langage C/Pointeurs d'entiers
Apparence
Introduction
[modifier | modifier le wikicode]Présentation
[modifier | modifier le wikicode]Nous allons voir une utilisation des pointeurs d'entiers.
Le but
[modifier | modifier le wikicode]Nous 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
[modifier | modifier le wikicode]Premier exemple sans le code d'erreur
[modifier | modifier le wikicode]- 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 | modifier le wikicode]/* ------------------------------------ */
/* 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
[modifier | modifier le wikicode]Exemple avec le code d'erreur
[modifier | modifier le wikicode]/* ------------------------------------ */
/* 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
[modifier | modifier le wikicode]Exemple avec le code d'erreur
[modifier | modifier le wikicode]/* ------------------------------------ */
/* 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};