Courts exemples sur le pointeurs,
Les sorties des programmes sont en italique
#include <stdio.h>
main()
{
double x;
printf("%d\n",&x);
}
8388424 Cette valeur dépend de l'installation utilisée (cela correspond à l'adresse de x)
#include <stdio.h>
main()
{
char tab[10000];
printf("%d %d\n",tab,&tab[0]);
}
8378432 8378432 Ces valeurs dépendent de l'installation utilisée
#include <stdio.h>
main()
{
int a,*pt_int=&a;
printf("%d\n",pt_int);
}
8388428 Cette valeur dépend de l'installation utilisée
#include <stdio.h>
main()
{
int *pt;
int i=17;
pt=&i;
printf("%d %d\n",*pt,
pt);
}
17 8388424
#include <stdio.h>
main()
{
float x=1.6,y=3.9,m;
float *pt_x=&x;
float *pt_y,*pt_m=&m;
pt_y=&y;
*pt_m=*pt_x
* *pt_y;
printf("%d %d %d\n\n", pt_x, pt_y,
pt_m);
printf("%f %f %f\n",*pt_x,
*pt_y,m);
}
8388428 8388424 8388420
1.600000 3.900000 6.240000
#include <stdio.h>
main()
{
char c='O';
char *pt_c=&c;
char **pt_pt_c=&pt_c;
printf("%d %d %c\n",pt_pt_c,pt_c,*pt_c);
}
8388424 8388431 O
#include <stdio.h>
void echange (int *ad1,
int *ad2);
main()
{
int a=10, b=20;
printf ("avant appel %d %d\n",a ,b);
echange (&a, &b);
printf ("après appel %d %d\n",a ,b);
}
void echange (int *ad1,
int *ad2)
{
int x;
x=*ad1;
*ad1=*ad2;
*ad2=x;
}
L'exécution de ce programme qui échange les contenus de deux adresses,
donne :
avant appel 10 20
après appel 20 10
On peut simuler un tableau en utilisant les pointeurs :
#include <stdio.h>
main()
{
int i, t[10]; /* t est
le tableau que l'on veut remplir des chiffres de 0 à 9 */
for (i=0; i<10; i++)
*(t+i)
= i; /* est équivalent à t[i] = i */
}
Ecrire de deux façons différentes, un programme qui lit 10 nombres entiers
dans un tableau avant d'en rechercher le plus grand et le plus petit.
a) en utilisant le "formalisme tableau"
b) en utlisant le" formalisme pointeur", à chaque fois que
cela est possible.
a)
#include <stdio.h>
#define NVAL 10 /*nombre de valeurs du tableau
*/
main()
{
int i, min, max;
int t[NVAL];
printf("donnez %d valeurs\n",NVAL);
for(i=0;i<NVAL;i++) scanf ("%d",&t[i]);
max=min=t[0];
for (i=1;i<NVAL;i++)
{
if (t[i]>max) max=t[i];
if (t[i]<min) min=t[i];
}
printf("valeur max : %d\n",max);
printf("valeur min : %d\n",min);
}
b)
#include <stdio.h>
#define NVAL 10 /*nombre de valeurs du tableau
*/
main()
{
int i, min, max;
int t[NVAL];
printf("donnez %d valeurs\n",NVAL);
for(i=0;i<NVAL;i++) scanf ("%d",t+i);
/*attention t+i et non *(t+i) */
max=min=*t;
for (i=1;i<NVAL;i++)
{
if (*(t+i)>max)
max=*(t+i);
if (*(t+i)<min)
min=*(t+i);
}
printf("valeur max : %d\n",max);
printf("valeur min : %d\n",min);
}