code | commentaire |
/* prog13a.c */ |
Il y a un type pointeur associé à chaque type. Un pointeur est une
valeur donnant une adresse en mémoire lors de l'exécution du
programme1.int* p signifie que p est un pointeur sur un entier
mais aussi, si p est alloué, que *p est une
variable de type entier.
p a initialement la valeur NULL qui indique que ce
pointeur pointe sur rien (aucune adresse mémoire).Une variable n de type entier a pour adresse
&n qui est un pointeur sur un entier.
L'affectation p=&n fait pointer p sur la
variable n .char* est le type pointeur sur caractère, qui correspond en C au
type chaine.Un tableau est aussi un pointeur sur le premier élément de ce tableau. Dans une fonction, il serait équivalent de passer en paramètre int u[] ou int* u , qui correspondent à la
même adresse.Il revient donc au même d'écrire u[1] ou u+1 ,
mais ce n'est pas recommandé!!De ce point de vue, une chaine se comporte comme un tableau. N.B. Selon le même principe, un tableau d'entiers à deux dimensions sera de type int** , à trois
dimensions int** , etc.Le type fichier est un type pointeur. Une variable fichier a la valeur NULL si elle n'est associée à aucun fichier. |
exécution | commentaire |
→ ./executable13a
pointeur code sur : 8 octets
|
La valeur d'un pointeur est un entier naturel exprimée en hexadécimal
(préfixe 0x ). La valeur NULL correspond à zéro.
|
code | commentaire |
/* prog13b.c */ |
argc est un pointeur sur un pointeur de caractère, ce qui
correspond à un tableau de chaines de caractères, ou encore à un tableau à
deux dimensions de caractères. argc[i] est le i-ième paramètre
et le (i+1)-ième argument de la ligne de commande. argc[i][j] est
le j-ième caractère de la chaine argc[i] .
|
exécution | commentaire |
→ ./executable13b programme : ./executable13b → ./executable13b un deux trois quatre
programme : ./executable13b
|
Le premier argument argv[0] est le nom du programme, le deuxième argument argv[0]est le premier paramètre du programme, etc. |