Extrait du cours initiation langage C pointeurs et fonctions
1.1 Variables : pointeurs et valeurs
1.1.1 Les variables et la mémoire.
Une variable (par exemple char car) est en fait une petite zone mémoire ici de 1 octet que l’on s’alloue et où l’on va ranger les informations (c’est la boîte vue durant le niveau 1). Chaque type de variable utilise au moins 1 octet. Le type int varie selon les compilateurs, pour nous il utilise 2 octets c’est à dire 2 cases mémoire. Nous avons vu précédemment qu’il était possible de voir le contenu d’une variable avec la fonction printf et qu’il était possible de mettre une valeur dans une variable avec l’opérateur = ou la fonction scanf.
Représentons-nous la mémoire comme une rue remplie de maisons. Chaque case mémoire est représentée par une maison.
Chaque maison porte un numéro, c’est ce que l’on appelle son adresse postale. Pour une case mémoire, on parlera d’adresse mémoire.
Cette adresse est unique pour chaque maison. Cependant, rien ne vous empêche de vous tromper intentionnellement ou non de maison. De la même façon, l’adresse mémoire d’une case est unique mais rien ne vous empêche de vous tromper intentionnellement ou non de case mémoire. (cf. Niveau 1)
1.1.2 Pointeurs
Pour utiliser les adresses mémoire des variables à la place des variables elles-mêmes,on utilise les pointeurs. Les pointeurs sont définis par un type et se déclarent de la façon suivante :
type* variable;
ou
type *variable;
Le signe * indique l’utilisation d’un pointeur i.e. l’utilisation d’une adresse mémoire.
Le type permet simplement de savoir comment le C doit interpréter l’adresse mémoire lors de sa lecture. Lors de l’utilisation des chaînes de caractères nous en verrons des exemples.
Pour enregistrer une valeur dans une adresse mémoire on écrit :
*variable = <valeur>
1.1.3 Exercices d’application
Réaliser un programme équivalent qui change la valeur en K.
Réaliser un programme équivalent qui change une valeur numérique (int) de 10 à 35.
1.2 Les fonctions
1.2.1 Définition générale
Une fonction est un petit bloc de programme qui à l’image d’une industrie va créer, faire ou modifier quelque chose.
Un bloc de programme est mis sous la forme d’une fonction si celui-ci est utilisé plusieurs fois dans notre code (dans notre programme) ou simplement pour une question de clarté (Imaginez un livre sans paragraphe).
A l’identique de notre fonction principale main (), une fonction s’écrit de la façon suivante :
<type de sortie> <nom de la fonction> (<paramètres d’appels>)
{
Déclaration des variables internes à la fonction
Corps du programme
Retour
}
1.2.2 Void
Le type void signifie indéfini, il est utilisé :
– comme type de sortie pour les fonctions qui ne retournent aucun résultat.
– dans la déclaration de pointeurs sur des zones mémoires dont on ne connaît pas le type.
Exemples
/* Pointeur sur une zone mémoire indéfinie */
void* m_ptr;
/* Fonction bête affichant un caractère */
void Affiche_car (char car)
{
printf (« %c »,car);
}
1.2.3 Variables globales et locales
Les variables déclarées dans les fonctions sont dites locales. Il existe aussi les variables dites globales qui sont déclarées en dehors de toute fonction y compris le main ().
Les variables globales sont modifiables et accessibles par toutes les fonctions sans avoir besoin de les passer en paramètre. Il est de ce fait extrêmement dangereux d’utiliser des variables globales.
……..
Cours initiation langage C pointeurs et fonctions (111 KO) (Cours PDF)