Introduction au langage C/Pointeurs d'entiers

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Pointeurs d'entiers
Icône de la faculté
Chapitre no 22
Leçon : Introduction au langage C
Chap. préc. :Tableau matrices complexes
Chap. suiv. :Pointeurs de structures
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Introduction au langage C : Pointeurs d'entiers
Introduction au langage C/Pointeurs d'entiers
 », n'a pu être restituée correctement ci-dessus.


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