37
1 Les pointeurs et quelques rappels sur certains éléments du langage C

1 Les pointeurs et quelques rappels sur certains éléments du langage C

Embed Size (px)

Citation preview

Page 1: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

1

Les pointeurs et quelques rappels sur certains éléments du

langage C

Page 2: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

2

Page 3: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

3

Page 4: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

4

Page 5: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

5

Page 6: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

6

Page 7: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

7

Page 8: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

8

#include <stdio.h>void main() { int i1=1,i2=2; int *p1,*p2;

p1=&i1;p2=p1;printf("%d,%d\n",*p1,*p2); /*affiche ?*/p2=&i2;printf("%d\n",*p2); /*affiche ?*/*p2=*p1;printf("%d\n",*p2); /*affiche ?*/

}

1,121

Page 9: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

9

#include<stdio.h>int main() { int i;

int *j;i = 1;j = &i;*j = 2;printf("i vaut : %d\n", i);return 0;

}

i vaut : 2

Page 10: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

10

#include <stdio.h>int main(){

int i=11;int *ptri;ptri = &i;printf("La valeur %d est pointee par %p\n“,i, ptri);return(0);

}

La valeur 11 est pointee par 2427:21FE

Page 11: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

11

#include <stdio.h>int main(){

int i;int *ptri;ptri = &i;printf("La valeur pointée par ptri est %d\n", *ptrI);return(0);

}

La valeur pointee par ptri est 19125

Page 12: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

12

#include <stdio.h>int main(){

int i;int *ptri;ptri = &i;i = 15;printf("La valeur pointée par ptri est %d\n", *ptri);return(0);

}

La valeur pointee par ptri est 15

Page 13: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

13

#include <stdio.h>void main() { int *ad1, *ad2, *ad;

int n = 10, p = 20;ad1 = &n;ad2 = &p;ad = NULL;printf("ad=%p\n",ad);*ad1 = *ad2 + 2; /*identique a n=p+2; */(*ad1)++; /* identique a n++;*/ad++;printf("ad=%p\n",ad);ad += 10;printf("ad=%p\n",ad);ad -= 25;printf("ad=%p\n",ad);n= ad1-ad2;printf("n=%d\n",n);

}

ad=0000:0000ad=0000:0002ad=0000:0016ad=0000:FFE4n=1

accès direct accès indirect

Page 14: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

14

Page 15: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

15

Page 16: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

16

Page 17: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

17

Page 18: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

18

Page 19: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

19

Page 20: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

20

Page 21: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

21

Page 22: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

22

Page 23: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

23

Page 24: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

24

Page 25: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

25

Exemple: Faire un programme C à calculer les trois résultats: 1) le nombre d’ éléments positives; 2) le nombre d’ éléments négatives; 3) la somme de tout les nombres dans un tableau donné.

Page 26: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

26

#include <stdio.h> 1/2void fon(int a[ ],int n,int *n_pos,int *n_neg,int *s);

void main() { int tab[ ]={22,-33,4,5,-6};

int n_pos,n_neg,somme; fon(tab,sizeof(tab)/sizeof(int),&n_pos,&n_neg,&somme); printf("Le nombre d'elements positives=%d\n",n_pos); printf("Le nombre d'elements negatives=%d\n",n_neg); printf("La somme d'elements=%d\n",somme);

}

Exemple:

Le nombre d'elements positives=3Le nombre d'elements negatives=2La somme d'elements=-8

Le prototype de la fonction

Page 27: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

27

void fon(int a[],int n,int *n_pos,int *n_neg,int *s) 2/2 { int i;

*n_pos=*n_neg=*s=0; for(i=0;i<n;i++)

{ if(a[i]>0) (*n_pos)++; else

if(a[i]<0) (*n_neg)++; (*s)+=a[i];}

}

La définition de la fonction

Page 28: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

28

Page 29: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

29chaîne est une valeur variable

Page 30: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

30

Page 31: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

31

Page 32: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

32

Page 33: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

33

Page 34: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

34

Exemple: Faire un programme C à trouver: 1) le nombre d’occurrence d’un caractère donné dans une chaîne de caractère donné; 2) la chaîne miroir de la chaîne donné.

#include <stdio.h> 1/3#include <string.h>

int count(char *s,char ch);void miroir(char *s,char *t);

Les prototypes des fonctions

Page 35: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

35

void main() 2/3 { char s[60],m[60],c; printf("Entrer une chaine:"); gets(s); printf("Entrer un caractere:"); fflush(stdin); c=getchar(); printf("Le nombre de caractere %c dans %s est=%d\n",c,s,count(s,c)); miroir(s,m); printf("La chaine miroir est: %s\n",m); }

Entrer une chaine:abcdccEntrer un caractere:cLe nombre de caractere c dans abcdcc est=3La chaine miroire est: ccdcba

Entrer des données

Appel des fonctions

Page 36: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

36

int count(char *s,char ch) 3/3{ int c=0; while(*s!='\0')

if(*s++ ==ch)c++; return c;}

void miroir(char *s,char *t) { int l=strlen(s);

s+=l-1;while(l)

{*t++=*s--; l- -;}

*t='\0'; }

La définition de la fonction de comptage

La définition de la fonction de miroir

Page 37: 1 Les pointeurs et quelques rappels sur certains éléments du langage C

37