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

Pointeurs en C : Guide complet sur les types, utilisation et bonnes pratiques

Qu'est-ce qu'un pointeur en C ?

Un pointeur est une variable qui stocke l'adresse mémoire d'une autre variable. En référençant l'adresse, un pointeur peut accéder ou modifier indirectement les données vers lesquelles il pointe. Cette indirection permet une utilisation efficace de la mémoire et une exécution rapide, surtout lors de la manipulation de grandes structures de données ou d'allocation mémoire dynamique.

Comment utiliser les pointeurs en C

Considérons une variable entière v :

int v = 0;

Sa valeur est 0, mais chaque variable a aussi une adresse unique. Vous pouvez récupérer cette adresse avec l'opérateur d'adresse (&) :

printf("Address of v: %p\n", (void*)&v);

L'adresse affichée ressemblera à un nombre hexadécimal aléatoire et peut différer à chaque exécution.

Voici un programme simple qui démontre comment un pointeur stocke une adresse :

#include <stdio.h>
int main() {
    int v = 0;
    int *y = &v; // y contient l'adresse de v
    printf("Address stored in y: %p\n", (void*)y);
    printf("Value pointed to by y: %d\n", *y);
    return 0;
}

Sortie typique :

Address stored in y: 0x7ffeefbff5c8
Value pointed to by y: 0

Déclarer un pointeur

Les déclarations de pointeur suivent le motif :

type_donnée *nom_pointeur;

Où type_donnée est le type de données que le pointeur référence. Exemples valides :

int *ptr_int;     // pointeur vers int
double *ptr_double; // pointeur vers double
char *ptr_char;   // pointeur vers char

Initialiser un pointeur

Après la déclaration, un pointeur doit être initialisé avec une adresse valide. L'utilisation d'un pointeur non initialisé mène à un comportement indéfini. Syntaxe d'initialisation :

pointeur = &variable;

Exemple :

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("Address in p: %p\n", (void*)p);
    printf("Value via p: %d\n", *p);
    return 0;
}

Types de pointeurs en C

Accès direct vs indirect

L'accès direct utilise le nom de variable directement ; l'accès indirect utilise un pointeur. Exemple :

#include <stdio.h>
int var = 1;
int *ptr = &var;
printf("Direct: %d\n", var); // 1
printf("Indirect: %d\n", *ptr); // 1
*ptr = 48; // modification via pointeur
printf("After change, indirect: %d\n", *ptr); // 48

Arithmétique des pointeurs

Quand un pointeur pointe vers un élément de tableau, ajouter ou soustraire un entier déplace le pointeur de ce nombre d'éléments, pas d'octets. Exemple :

int arr[5] = {1,2,3,4,5};
int *p = arr; // pointe vers arr[0]
for (int i = 0; i < 5; ++i) {
    printf("%d\n", *p);
    ++p; // passer à l'élément suivant
}

Règles clés :

Pointeurs avec les tableaux

Les pointeurs fournissent un moyen concis d'itérer sur les éléments de tableau :

int a[5] = {1,2,3,4,5};
int *p = a; // identique à &a[0]
for (int i = 0; i < 5; ++i) {
    printf("%d\n", *p++); // affiche 1 à 5
}

Pointeurs et chaînes

Une chaîne est un tableau de char terminé par un caractère nul. La manipulation par pointeurs rend le parcours de chaîne trivial :

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello Guru99!";
    char *p = str;
    printf("First character: %c\n", *p);
    ++p;
    printf("Next character: %c\n", *p);
    // Afficher toute la chaîne
    for (int i = 0; i < strlen(str); ++i) {
        printf("%c\n", *p++);
    }
    return 0;
}

Avantages des pointeurs

Pièges potentiels

Points clés à retenir

Langue C

  1. Maîtriser les variables C# et types de données primitifs : guide complet
  2. Quatre modèles éprouvés pour les fonctions définies par l'utilisateur en C
  3. Maîtriser les pointeurs en C : Tutoriel pratique guidé par des experts
  4. Maîtriser les pointeurs en C++ : Concepts, exemples et applications pratiques
  5. Comprendre l'impression 3D : principes, types et applications clés
  6. Comprendre les Types de Variables en Java : Guide Complet
  7. Maîtriser les pointeurs en C : Étapes pratiques vers la programmation avancée
  8. Types de variables en C++ : Mémoire, limites et opérations
  9. Types de variables Python : Comprendre et utiliser les types de données