Leçons de niveau 14

Introduction au langage C/Pointeurs d'entiers

Une page de Wikiversité.
Sauter à la navigation Sauter à la recherche
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
Icon falscher Titel.svg
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};