Vous êtes sur la page 1sur 3

Les pointeurs Mr Benabderrezak

#include <stdio.h>
#include <stdlib.h>

int main() {
// Exemple d'utilisation basique de pointeurs pour accéder à une variable
int num = 10;
int *ptr = &num; // Initialisation d'un pointeur avec l'adresse d'une variable
printf("%d\n", *ptr); // Affiche la valeur de la variable en utilisant le déréférencement du pointeur

// Exemple d'utilisation de pointeurs pour échanger des valeurs


int a = 10, b = 20;
int *ptrA = &a, *ptrB = &b; // Déclaration des pointeurs et initialisation avec les adresses des variables
int temp = *ptrA; // Stockage de la valeur pointée par ptrA dans une variable temporaire
*ptrA = *ptrB; // Assignation de la valeur pointée par ptrB à la variable pointée par ptrA
*ptrB = temp; // Assignation de la valeur temporaire à la variable pointée par ptrB
printf("%d %d\n", a, b); // Affiche les valeurs échangées

// Exemple d'utilisation de pointeurs pour parcourir un tableau


int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr; // Initialisation du pointeur avec l'adresse du premier élément du tableau
for (int i = 0; i < 5; i++) {
printf("%d ", *ptr); // Affiche la valeur pointée par le pointeur
ptr++; // Déplacement du pointeur vers l'élément suivant
}
printf("\n");

// Exemple d'arithmétique des pointeurs


int arr2[] = {1, 2, 3, 4, 5};
int *ptr2 = arr2; // Initialisation du pointeur avec l'adresse du premier élément du tableau
printf("%d\n", *(ptr2 + 2)); // Affiche la valeur de l'élément situé à deux positions de l'élément pointé

// Exemple d'utilisation de pointeurs avec des structures


typedef struct {
int x;
int y;
} Point;
Point p;
Point *ptr = &p; // Initialisation du pointeur avec l'adresse de la structure
ptr->x = 5; // Accès et modification des membres de la structure via le pointeur
ptr->y = 10;
printf("%d %d\n", p.x, p.y); // Affiche les valeurs de la structure
printf("%d %d\n", ptr->x, ptr->y); // Affiche les valeurs de la structure avec les pointeurs

1
Les pointeurs Mr Benabderrezak

// Exemple d'utilisation de pointeurs avec des chaînes de caractères


char *str = "Hello";
printf("%c\n", *str); // Affiche le premier caractère de la chaîne

// Exemple d'utilisation de pointeurs avec des tableaux de pointeurs


int num1 = 10, num2 = 20, num3 = 30;
int *arr3[] = {&num1, &num2, &num3}; // Tableau de pointeurs vers des entiers
printf("%d\n", *(arr3[2])); // Affiche la valeur pointée par le pointeur à l'indice 2 du tableau

// Exemple d'utilisation de point eurs pour allouer et manipuler des tableaux dynamiques
int size;
printf("Entrez la taille du tableau : ");
scanf("%d", &size);
int *arr = (int *)malloc(size * sizeof(int)); // Allocation dynamique d'un tableau
for (int i = 0; i < size; i++) {
*(arr + i) = i + 1; // Assignation de valeurs au tableau en utilisant l'arithmétique des pointeurs
}

for (int i = 0; i < size; i++) {


printf("%d ", *(arr + i)); // Affichage des valeurs du tableau
}
printf("\n");

free(arr); // Libération de la mémoire allouée dynamiquement

Exemple
Écrivez un programme qui gère une liste d'étudiants. Chaque étudiant est décrit par
son nom et son âge. Le programme doit permettre d'ajouter un nouvel étudiant à la
liste et d'afficher tous les étudiants enregistrés.
#include <stdio.h>
#include <stdlib.h>
# define MAX_ETUDIANTS 10

typedef struct {
char nom[50];
int age;
} Etudiant;

2
Les pointeurs Mr Benabderrezak

void ajouterEtudiant(Etudiant *etudiants, int *nombreEtudiants) {


printf("Entrez le nom de l'etudiant : ");
scanf("%s", etudiants[*nombreEtudiants].nom);
printf("Entrez l'age de l'etudiant : ");
scanf("%d", &etudiants[*nombreEtudiants].age);
(*nombreEtudiants)++;
}

void afficherEtudiants(Etudiant *etudiants, int nombreEtudiants) {


printf("\n Liste des etudiants :\n");
for (int i = 0; i < nombreEtudiants; i++) {
printf("Nom: %s, Age: %d\n", etudiants[i].nom, etudiants[i].age);
}
}

int main() {
Etudiant *etudiants = NULL;
int nombreEtudiants = 0;

etudiants = (Etudiant *)malloc(MAX_ETUDIANTS * sizeof(Etudiant));


if (etudiants == NULL) {
printf("Erreur d'allocation memoire.\n");
return 1;
}

// Ajout d'un nouvel étudiant


ajouterEtudiant(etudiants, &nombreEtudiants);

// Affichage des étudiants enregistrés


afficherEtudiants(etudiants, nombreEtudiants);

free(etudiants);

return 0;
}

Vous aimerez peut-être aussi