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

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

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

2

3

4

5

6

7

8 #include 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,1 2 1

9 #include int main() { int i; int *j; i = 1; j = &i; *j = 2; printf("i vaut : %d\n", i); return 0; } i vaut : 2

10 #include 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

11 #include 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

12 #include 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

13 #include 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:0000 ad=0000:0002 ad=0000:0016 ad=0000:FFE4 n=1 accès direct accès indirect

14

15

16

17

18

19

20

21

22

23

24

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é.

26 #include 1/2 void 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=3 Le nombre d'elements negatives=2 La somme d'elements=-8 Le prototype de la fonction

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

28

29 chaîne est une valeur variable

30

31

32

33

34 Exemple: Faire un programme C à trouver: 1) le nombre doccurrence dun caractère donné dans une chaîne de caractère donné; 2) la chaîne miroir de la chaîne donné. #include 1/3 #include int count(char *s,char ch); void miroir(char *s,char *t); Les prototypes des fonctions

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:abcdcc Entrer un caractere:c Le nombre de caractere c dans abcdcc est=3 La chaine miroire est: ccdcba Entrer des données Appel des fonctions

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

37