Académique Documents
Professionnel Documents
Culture Documents
1. Les pointeurs
2. Les tableaux
Les chaînes de caractères
Les tableaux à plusieurs indices
1
Les pointeurs
2
Déclaration d’un pointeur sur donnée
La déclaration :
Type_donnee *Ident_ptr;
Exemple :
int *pAdi;
int i;
int *pAdi;
3
L’adressage indirect
L’adressage indirect
4
Arithmétique des pointeurs sur données
Exemple
double *pAd; 60 i = 80
int i = 80; 64 xx = 3.1415
double xx=3.1415; 100 pAd = ?
…… 60 i = 80
64 xx = 3.1415
pAd = &xx; 100 pAd = 64
pAd = pAd + i; 60 i = 80
64 xx = 3.1415
/* pAd +i*sizeof(double)
pAd + 80*8 octets */ 100 pAd = 704
Prof Asmaa El Hannani 2AP-S3 127
5
Exercice
Expliquez les valeurs qui vont être afficher.
#include <stdio.h>
int main() {
int var =10;
int *p;
p= &var;
printf ( "%p \n", &var);
printf ( "%p \n", p);
printf ( "%d \n", var);
printf ( "%d \n", *p);
printf ( "%d \n", *(&var));
Printf ( "%p \n", p);
printf ( "%p ", &p);
return 0;
}
Prof Asmaa El Hannani 2AP-S3 128
Les Tableaux
6
Définition et Déclaration
Déclaration:
Type_donnee Ident_Tab [NbElem];
int, double, char …
Ident_Tab : le nom du tableau, c'est le pointeur sur le tableau, c'est la
variable qui contient l'adresse du 1er élément du tableau
NbElem : le nombre d’éléments du tableau
Quelques règles
Chaque élément est repéré par sa position dans le tableau, nommée
indice et qui est placé entre [ ]. Le 1er élément du tableau déclaré
par int tab[20]; sera désigné par tab[0], le 2ème pat tab[1], ….
Un indice peut prendre la forme de n’importe quelle expression
arithmétique de type entier.
La dimension d’un tableau ne peut être qu’une constante ou une
expression constante. #define N 50
Ainsi, cette construction: … est correcte.
int t[N] ;
float h[2*N-1] ;
En revanche, elle ne le serait pas (en C) si N était une constante
symbolique définie par const int N=50, les expressions N et 2*N-1
n’étant alors plus calculables par le compilateur!
Prof Asmaa El Hannani 2AP-S3 131
7
L'initialisation explicite d'un tableau
8
Exemple
t &t[0]
t+1 &t[1]
t+i &t[i]
t[i] *(t+i)
Chaînes de caractères :
Tableau 1D de caractères
Déclaration et initialisation :
char chaine[10];
char source[]="Ma premiere chaine de char";
char lettre[]={'t','a','r','a','t','a','t','a',0};
Format:
printf("\nLe contenu de source est %s",source);
scanf("%s",chaine);
\\ou
gets(chaine);
9
Exemple
char *pfin;
char cBonjour [] = "Bonjour";
pfin = cBonjour + strlen(cBonjour);
do{
printf ("%c",*--pfin);
}while (cBonjour != pfin );
Pour comprendre
strlen(cBonjour) renvoie 7
strlen est une fonction prédéfinie en C, qui donne le
nombre de caractères de la chaine donnée en paramètre.
pfin = cBonjour + 7
10
Tableau de Tableaux
Déclaration:
Type_donne Indent_Tab_Tab[Nlign][Ncol];
Nlign et Ncol sont des constantes entières
Exemple
float mat[3][3];
int trice[3][3]={{1,1,1}, {1,1,1}, {1,1,1}};
printf("%d %d %d", trice[0][0],trice[1][1],trice[2][2]);
scanf("%f",&mat[0][0]); \*ou*\ scanf("%f",mat[0]);
11
Exemple
int t[3][4];
Exercice:
12