• Aucun résultat trouvé

Exercices les pointeurs

N/A
N/A
Protected

Academic year: 2022

Partager "Exercices les pointeurs"

Copied!
6
0
0

Texte intégral

(1)

75019 PARIS

http://www.diderot.org

Exos Langage C

Les pointeurs

Exercices sur les pointeurs

Auteur Version - Date Nom du fichier

G.VALET Version 1.3 - Nov 2010

exo-langageC-pointeurs

.

docx

Quelques exercices sur les pointeurs. Pour effectuer correctement ces exercices, se référer au "cours de programmation en C de M. LEBRET" et notamment à la partie sur les "pointeurs", les "structures" et les

"fonctions"

(2)

Les pointeurs - G.VALET – Reproduction interdite 2 / 9

A. Sommaire

A.SOMMAIRE ... 2

B.PRESENTATION DES POINTEURS ... 3

B.1. Définition ... 3

B.2. Utilisation... 3

B.3. Arithmétique des pointeurs ... 4

C.QUELQUES QUESTIONS ... 5

D.ENONCE DES EXERCICES ... 6

D.1. Déclaration et utilisation ... 6

D.2. Afficher une chaîne de caractères ... 6

D.3. Passage par adresse ... 6

D.4. Traitement de chaine ... 7

D.5. Calculer la taille d’une chaîne ... 7

D.6. Conversion binaire-décimal ... 8

a. Objectif ... 8

b. Algorithme ... 8

c. Poids fort ... 8

d. Vérifi atio d usage ... 9

e. Mise e œuv e ... 9

(3)

Les pointeurs - G.VALET – Reproduction interdite 3 / 9

B. Présentation des pointeurs

B.1. Définition

Un pointeur est une variable qui désigne un emplacement mémoire (une adresse) occupée par une do e do t le t pe est d fi i lo s de la d la atio . Lo s u o définit un pointeur, on précise également le t pe de do e ue o tie t l e pla e e t poi t :

Mémoire

char * p1;

a

p1 « pointe » sur le caractère ‘a’ stocké en mémoire

P iso s gale e t u u poi teu « pointe » sur une donnée en mémoire et que cette donnée peut être codée sur plusieurs emplacements mémoire. Dans ce cas, le pointeur « pointe » sur le premier emplacement de la donnée :

Mémoire

short int * p2;

01 4F

p2 « pointe » sur le 1 er octet d’un entier court

Codage d’un entier court (014F)

16

= (335)

10

B.2. Utilisation

Pou d la e u poi teu , il suffit d utili ser la syntaxe suivante :

int *i ; // « * » dans la déclaration indique qu‟il s‟agit d‟un pointeur

Le poi teu est alo s utilisa le pou affe te le o te u de l ad esse o espo da te :

*i = 134; // « * » dans l‟affectation défini le contenu de l‟adresse pointée

Il est possi le de a ipule les poi teu s de telle a i e u ils « pointent » sur un emplacement déjà occupé par une variable :

char c =‟a‟ ;

char *p1 = &c ; // « & » signifie adresse de la variable c. p1 « pointe » sur c

Une variable pointeur est déclarée en utilisant le caractère « * » devant le nom de la variable. Cette

notation permet de distinguer les variables réelles des pointeurs.

(4)

Les pointeurs - G.VALET – Reproduction interdite 4 / 9

Mémoire

char * p1 = &c;

a

p1 « pointe » sur le caractère ‘a’ stocké en mémoire

char c = „a‟;

c est une variable contenant le caractère ‘a’

B.3. Arithmétique des pointeurs

Il s agit sa s doute d u e otio appo ta t le plus de puissa e au poi teu s. L a ith ti ue des pointeurs permet de manipuler la mémoire avec une grande fle i ilit ave d e elle tes pe fo a es.

Voici quelques explications :

 Eta t do u u poi teu est « typé », nous savons donc quel type de donnée est stocké à l emplacement mémoire associé.

 Cha ue t pe de do e a u e taille d fi ie à l ava e ha r = 1octet, float = 4 octets, double = 8 o tets, …

 Les opérateurs arithmétiques tiennent compte de cette taille ( +, - , … et permettent de déplacer un pointeur vers un autre emplacement mémoire

Voi i u e e ple illust a t l a ith ti ue des poi teu s :

float tab[4] = { 13.45 , 4.56, 1.2, 67.4 }; // tab est l‟adresse du tableau

float *p1 = tab ; // p1 est un pointeur qui pointe sur le 1er élément du tableau

for (int i=0 ; i<4 ; i++) { // Boucle d‟affichage des flottants printf(“%f , ”, p1); // Affichage du flottant pointé par p1 p1 = p1 + 1; // p1 pointe sur le flottant suivant }

Dans cet exemple, « p1 » pointe sur le 1

er

élément du tableau :

Mémoire

float *p1 = tab;

float tab[4]; 13.45 4.56 1.2 67.4

p1+1; p1+2; p1+3;

(5)

Les pointeurs - G.VALET – Reproduction interdite 5 / 9

C. Quelques questions

Voici quelques questions en relation avec les pointeurs et les structures.

Question 1. Décrivez dans un tableau, les différents types de données numériques et alphanumériques e p isa t l i te valle de o es et l o upatio oi e.

Question 2. Le programme suivant manipule 2 pointeurs de types diff e ts. L u su le t pe

« unsigned int » et l aut e su u « char ». Les 2 pointeurs vont pointer à la même adresse en mémoire.

Quel sera le contenu de p2 affiché ? Expliquez ce résultat

#include <stdio.h>

int main() {

unsigned int entier = 134486;

char *p;

p=&entier; // p pointe sur entier printf("Contenu de p =%c\n",*p);

return 0;

}

Question 3. Dessinez un schéma de la mémoire pour la structure suivante en prenant en compte la taille des différents éléments de la structure.

struct ethernet { char macdest[6];

char macsource[6];

short int type;

int checksum;

};

(6)

Références

Documents relatifs

limiter l’entassement de la végétation par suppression au printemps des pousses aériennes non fructifères excédentaires et diminuer le risque de foyer primaire mildiou et

[r]

Init.. Exercice 5 : Écrire un programme qui lit deux chaînes de caractères CH1 et CH2 au clavier et élimine toutes les lettres de CH1 qui apparaissent aussi dans CH2. Utiliser

Il est rappelé que le présent mémoire technique est une pièce contractuelle du marché ; à ce titre, les informations et dispositions renseignées dans le présent document aux

LEGEND Microclimatology observation mast Raingauge & Weather station Flowmeter Rainwater quality sampler Piezometer Rainwater sewer system Wastewater sewer system... Evolution du

Il y a des années, dans le tout petit pays de Pouchnikof, vivait un acrobate. Il savait marcher sur les mains, faire la roue, faire des sauts périlleux, et bien d’autres choses

- Le pointeur « ptr » contient l’adresse mémoire d’une zone mémoire capable de contenir une variable de type « int ».. - La définition d’un pointeur n’alloue en

● Document à destination des élèves concernant la sécurité au laboratoire, les éléments du SGH (Système Général Harmonisé) à appliquer et à connaître, les phrases de