Title: 8PRO100
18PRO100
Éléments de programmation
Les pointeurs de caractères
2Constantes de type chaîne
Considérez une constante de type chaîne telle
que "Bonjour groupe" 1) Réserve 15 octets en
mémoire (14 caractères NUL) 2) Cet espace est
en lecture seulement 3) L'espace demeure toujours
accessible même si "Bonjour groupe" apparaît
dans une fonction. 4) Cette chaîne est un tableau
de caractère donc elle correspond à une
adresse en mémoire
o
r
n
j
u
o
g
r
o
B
e
p
u
\0
3Exemple
char chaine() return "Bonjour groupe" /
retourne l'adresse du début de la chaîne
/ main() printf("p s\n",
chaine(), chaine())
108f0 Bonjour groupe
4Différence entre tableaux et pointeurs
char tab "Bonjour groupe" / Le tableau
est initialisé avec la chaine / char p
"Bonjour groupe" / Le pointeur est initialisé
avec l'adresse de la chaîne
/
tab
o
r
n
j
u
o
g
r
o
B
e
p
u
\0
p
o
r
n
j
u
o
g
r
o
B
e
p
u
\0
5Différence entre tableaux et pointeurs
char tab "Bonjour groupe" char p "Bonjour
groupe" tab0 'H' / Valide / p0
'H' / Non valide / p tab p0 'H' /
Valide /
tab
o
r
n
j
u
o
g
r
o
B
e
p
u
\0
p
o
r
n
j
u
o
g
r
o
B
e
p
u
\0
6Les assignations
char tab110"Bonjour" char tab210"groupe" c
har ptab1, qtab2 M p q / p pointe
vers un nouvel endroit / M strcpy(p,q) / p
pointe toujours au même endroit. La chaîne
située à l'adresse q est copiée à l'adresse
p /
7Les tableaux de pointeurs
char couleur "Coeur", "Carreau", "Trefle",
"Pique"
\0
C
o
u
e
r
couleur
\0
C
a
r
r
u
a
e
\0
T
r
f
e
e
l
\0
P
i
u
q
e
8Comparaison avec les tableaux à 2 dimensions
char couleur8 "Coeur", "Carreau",
"Trefle", "Pique"
Couleur
\0
C
o
u
e
r
\0
C
a
r
r
u
a
e
\0
T
r
f
e
e
l
\0
P
i
u
q
e
Remarque Il est obligatoire de donner la seconde
dimension.
9Passage en paramètre
void f(char tab) main() char couleur
"Coeur", "Carreau", "Trefle", "Pique" f(couleur)
\0
C
o
u
e
r
couleur
\0
C
a
r
r
u
a
e
tab
\0
T
r
f
e
e
l
\0
P
i
u
q
e
10Les paramètres de la fonction main
Pour utiliser les paramètres de la ligne de
commande, il faut utiliser le prototype de la
fonction main suivante main(int argc, char
argv) argc Nombre darguments de la ligne de
commande argv Pointeurs sur un tableau de
chaînes de caractères. argv0 est le
nom par lequel le programme a été appelé.
argv1 est le premier paramètre
argvargc-1 est le dernier paramètre
argvargc vaut 0 (le pointeur NULL)
11Les paramètres de la fonction main
Exemple La commade echo sur UNIX echo
bonjour groupe argc vaut 3 argv0 vaut
echo argv1 vaut bonjour argv2 vaut
groupe
\0
e
o
h
c
argv
\0
b
o
j
n
r
u
o
e
r
g
p
u
o
\0
0
12La commande echo (version 1)
include ltstdio.hgt main(int argc, char
argv) int i for (i1 iltargc
i) printf("ss", argvi, (iltargc-1) ? " "
"") printf("\n") return 0
\0
e
o
h
c
argv
\0
b
o
j
n
r
u
o
e
r
g
p
u
o
\0
0
13La commande echo (version 2)
include ltstdio.hgt main(int argc, char
argv) while (--argcgt0) printf("ss",
argv, (argcgt1) ? " " "") printf("\n")
return 0
\0
e
o
h
c
argv
\0
b
o
j
n
r
u
o
e
r
g
p
u
o
\0
0