Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Maîtriser les pointeurs en C : Étapes pratiques vers la programmation avancée

Les pointeurs en C sont simples et amusants à apprendre. Certaines tâches sont plus faciles avec des pointeurs, d'autres — comme l'allocation mémoire dynamique — sont impossibles sans eux. Indispensables pour devenir un bon programmeur C.

Chaque variable est une adresse mémoire, accessible via l'opérateur & (adresse de). Exemple :

#include <stdio.h>
int main() {
    int var1;
    char var2[10];
    printf("Adresse de var1 : %p\n", (void*)&var1);
    printf("Adresse de var2 : %p\n", (void*)&var2);
    return 0;
}

Résultat typique (adresses hexadécimales) :

Adresse de var1 : 0x7ffd8b3c
Adresse de var2 : 0x7ffd8b36

Qu'est-ce qu'un pointeur ?

Un pointeur est une variable dont la valeur est l'adresse d'une autre variable (adresse directe en mémoire). Comme toute variable, il doit être déclaré avant usage. Forme générale :

type *nom_var;

type : type de base du pointeur (type C valide). nom_var : nom du pointeur. L'astérisque * désigne ici un pointeur (pas multiplication).

Déclarations valides :

int *ip;      // pointeur vers int
double *dp;   // pointeur vers double
float *fp;    // pointeur vers float
char *ch;     // pointeur vers char

Tous les pointeurs stockent une adresse (nombre hexadécimal long). La différence est le type de donnée pointée.

Comment utiliser les pointeurs ?

Opérations fréquentes : (a) déclarer un pointeur, (b) y assigner l'adresse d'une variable (&), (c) accéder à la valeur à cette adresse via l'opérateur unaire * (déréférencement).

#include <stdio.h>
int main() {
    int var = 20;
    int *ip;
    ip = &var;           // stocke l'adresse de var
    printf("Adresse de var : %p\n", (void*)&var);
    printf("Adresse dans ip : %p\n", (void*)ip);
    printf("Valeur de *ip : %d\n", *ip);  // déréférencement
    return 0;
}

Résultat :

Adresse de var : 0x7ffd8b3c
Adresse dans ip : 0x7ffd8b3c
Valeur de *ip : 20

Pointeurs NULL

Bonne pratique : initialisez à NULL si pas d'adresse précise. NULL = 0 (défini dans bibliothèques standards). Un pointeur NULL ne pointe vers rien.

#include <stdio.h>
int main() {
    int *ptr = NULL;
    printf("Valeur de ptr : %p\n", (void*)ptr);
    return 0;
}

Résultat : Valeur de ptr : (nil) (ou 0).

L'adresse 0 est réservée par l'OS. Par convention, pointeur NULL = ne pointe vers rien.

Test : if (ptr) (non-NULL) / if (!ptr) (NULL).

Pointeurs en détail

Concepts importants :

N°Concept et description
1Arithmétique des pointeurs : ++, --, +, - sur pointeurs.
2Tableaux de pointeurs : tableaux contenant des pointeurs.
3Pointeur vers pointeur : C permet plusieurs niveaux d'indirection.
4Passage de pointeurs aux fonctions : passage par adresse/référence permet de modifier l'argument dans l'appelant.
5Retour de pointeur depuis fonction : retour vers variable locale static, variable globale, ou mémoire allouée dynamiquement.

Langue C

  1. Variables, constantes et littéraux en C : Guide complet
  2. Comprendre les classes de stockage en C : Portée, durée de vie et performance
  3. Maîtriser les pointeurs en C : Tutoriel pratique guidé par des experts
  4. Comprendre la relation entre les tableaux et les pointeurs en C
  5. Programmation C : Passage d'adresses et de pointeurs aux fonctions – Guide pratique
  6. Maîtriser les structures et pointeurs en C : Guide pratique
  7. Maîtriser le mot-clé global en Python : Comment et quand l'utiliser
  8. Maîtriser les pointeurs en C++ : Concepts, exemples et applications pratiques
  9. Variables C, types de données et constantes – Guide pratique