« C pointeurs/Pointeurs d'entiers » : différence entre les versions

Contenu supprimé Contenu ajouté
Page créée avec « {{Chapitre | niveau = 14 | idfaculté = informatique | numéro = 19 | précédent = ../Matrices complexes fractions 3/ | suivant = ../Pointeurs d... »
 
Page blanchie
Ligne 1 :
{{Chapitre
| niveau = 14
| idfaculté = informatique
| numéro = 19
| précédent = [[../Matrices complexes fractions 3/]]
| suivant = [[../Pointeurs de structures /]]
}}
 
 
== Introduction ==
 
=== Présentation ===
 
Nous allons voir une utilisation des pointeurs d'entiers.
 
 
=== Le but ===
 
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 ==
 
=== Premier exemple sans le code d'erreur ===
 
 
* L'initialisation du point ce fait par des constantes, cela pourrait être des fonctions.
 
 
<source lang="c">
/* ------------------------------------ */
/* 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;
}
</source>
 
 
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 ===
 
 
<source lang="c">
/* ------------------------------------ */
/* 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;
}
</source>
 
* Essayer :
** point2d p={ -9, +9};
** point2d p={-10, +9};
** point2d p={ -9,+10};
** point2d p={-11,+11};
 
 
== Pointeurs de double ==
 
 
=== Exemple avec le code d'erreur ===
 
<source lang="c">
/* ------------------------------------ */
/* 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;
}
</source>
 
* Essayer :
** point2d p={ -9, +9};
** point2d p={-10, +9};
** point2d p={ -9,+10};
** point2d p={-11,+11};
 
 
== Pointeurs de char ==
 
 
=== Exemple avec le code d'erreur ===
 
<source lang="c">
/* ------------------------------------ */
/* 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;
}
</source>
 
* Essayer :
** point2d p={ -9, +9};
** point2d p={-10, +9};
** point2d p={ -9,+10};
** point2d p={-11,+11};
 
 
{{Bas de page
| idfaculté = informatique
| précédent = [[../Matrices complexes fractions 3/]]
| suivant = [[../Pointeurs de structures /]]
}}