Qu'est-ce qu'un pointeur ? Comment l'utiliser dans vos programmes ?

Introduction

Un pointeur en C est une variable qui contient l’adresse mémoire d’une autre variable. En d’autres termes, il s’agit d’une variable spéciale qui ne stocke pas directement une valeur, mais plutôt l’emplacement en mémoire où une valeur est stockée. Les pointeurs sont largement utilisés en C et sont essentiels pour des tâches telles que la gestion dynamique de la mémoire, l’optimisation des performances et l’interaction avec le matériel.

En général, un pointeur occupe un nombre fixe de cases en mémoire, souvent 2 octets (16 bits) ou 4 octets (32 bits) en fonction de l’architecture du système. Cette taille dépend de la plateforme sur laquelle le code est exécuté.

Voici un exemple d’une déclaration d’un pointeur :

#include <stdio.h>
void main(){
        char chaine_caractere;
        char *pointeur;
        pointeur =&chaine_caractere; // pointeur pointant sur Chaine_caractere
}

On peut utiliser le pointeur à chaque fois que l’on veut nommer la variable vers lequel il pointe.

Pour pouvoir incrémenter le pointeur, vous devez mettre des parenthèse : (*p)=++;

Ceci n’est pas possible : *p++;

Exemple

#include <stdio.h>
void main(){
        u16 w=1,y=2, z[10];
        u16 *p; // p est un pointeur sur une variable 16 bits
        p =&w, // p pointe sur w
        y=*p; // y vaut maintenant 1
        *p=0; // x vaut maintenant 0
        p=&z[0] // p pointe sur z[0]
}

Déclarer les pointeurs

On va voir comment déclarer des pointeurs avec des variables entières et des char.

A) Utiliser les pointeurs avec les entiers

Voici comment déclarer un pointeur sur un entier :

int variable_entier=3; // On déclare notre variable entière.
u16 *pointeur; // On déclare notre pointeur
pointeur =&variable_entier; // Le pointeur prends la valeur de variabel_entier

B) Utiliser les pointeurs dans des char

Voici comment déclarer un pointeur sur un char :

char chaine_caractere[] ={"Hello"}; // Déclaration de la chaîne de caractère
char *pointeur_char ={"Hello"}; // Pointeur vers la chaîne

Les pointeurs de structure

Une structure rassemble une ou plusieurs variables qui peuvent être de types différents, que l’on regroupe sous un seul nom pour les manipuler facilement.

struct pointeur { // Création de la structure
    // Initialisation des deux variables x et y.
    short x;
    short y;
};
struct point pt;// Permet d'appeler la structure avec pt.
pt.x // désigne la variable x dans la structure point

Typedef

Typedef est une instruction en langage C qui permet de définir des identificateurs pour représenter des types de données existants. Cette fonctionnalité est très utile pour améliorer la lisibilité du code, le rendre plus portable et faciliter la maintenance.

Exemple : typedef short longueur;

Ici longueur devient synonyme de short.

Les typedefs sont très utilisés dans le cas des structures pour pouvoir les déclarer plus lisiblement et les utiliser entre vos fichiers C.

typedef struct nom {
    char kind;
    char length;
}

N’hésitez pas à consulter nos autres cours en langage C embarqué : les pointeursles opérateurs.