370 likes | 524 Views
Les pointeurs et quelques rappels sur certains éléments du langage C. #include <stdio.h> void main() { int i1=1,i2=2; int *p1,*p2; p1=&i1; p2=p1; printf("%d,%d<br>",*p1,*p2); /*affiche ?*/ p2=&i2; printf("%d<br>",*p2); /*affiche ?*/ *p2=*p1; printf("%d<br>",*p2); /*affiche ?*/
E N D
Les pointeurs et quelques rappels sur certains éléments du langage C
#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,1 2 1
#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
#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
#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
#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
#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); } accès indirect accès direct ad=0000:0000 ad=0000:0002 ad=0000:0016 ad=0000:FFE4 n=1
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é.
Exemple: Le prototype de la fonction #include <stdio.h> 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); } Le nombre d'elements positives=3 Le nombre d'elements negatives=2 La somme d'elements=-8
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
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
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 des données Appel des fonctions Entrer une chaine:abcdcc Entrer un caractere:c Le nombre de caractere c dans abcdcc est=3 La chaine miroire est: ccdcba
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