Différences entre versions de « Pointeurs en langage C »
Ligne 120 : | Ligne 120 : | ||
}}<!-- ********************* FIN Fiche Didactique Mots-clés *******************--> | }}<!-- ********************* FIN Fiche Didactique Mots-clés *******************--> | ||
− | = Présentation | + | = Présentation des Pointeurs = |
<!-- *************** Début Fiche Didactique Explicitations ***************** --> | <!-- *************** Début Fiche Didactique Explicitations ***************** --> | ||
Ligne 129 : | Ligne 129 : | ||
<!-- ****************** Commercez les modifications *********************** --> | <!-- ****************** Commercez les modifications *********************** --> | ||
== Comprendre la notion d'adresse == | == Comprendre la notion d'adresse == | ||
+ | un pointeur est une variable qui permet de stocker une adresse, il est donc nécessaire de comprendre ce qu'est une adresse. | ||
+ | |||
+ | Lorsque l'on exécute un programme, celui-ci est stocké en mémoire,cela signifie que d'une part le code à exécuter est stocké, mais aussi | ||
+ | que chaque variable que l'on a défini a une zone de mémoire qui lui est réservée, et la taille de cette zone correspond au type de variable que l'on a déclaré. | ||
+ | |||
+ | En réalité la mémoire est constituée de plein de petites cases de 8 bits (un octet). Une variable, selon son type (donc sa taille), va ainsi occuper | ||
+ | une ou plusieurs de ces cases (une variable de type char occupera une seule case, tandis qu'une variable de type long occupera 4 cases consécutives). | ||
+ | |||
+ | Chacune de ces « cases » (appelées blocs) est identifiée par un numéro.Ce numéro s'appelle adresse. | ||
+ | |||
+ | On peut donc accéder à une variable de 2 façons : | ||
+ | |||
+ | #grâce à son nom | ||
+ | #grâce à l'adresse du premier bloc alloué à la variable | ||
+ | |||
+ | Il suffit donc de stocker l'adresse de la variable dans un pointeur (il est prévu pour cela) | ||
+ | afin de pouvoir accéder à celle-ci (on dit que l'on « pointe vers la variable »). | ||
+ | |||
== Adressage == | == Adressage == | ||
− | == Adressage des variables == | + | |
− | === Adressage direct === | + | === Adressage des variables === |
− | === Adressage indirect === | + | les deux modes d'adressage principaux sont: |
+ | |||
+ | ==== Adressage direct ==== | ||
+ | |||
+ | Dans la programmation, nous utilisons des variables pour stocker des informations. La valeur d'une variable se trouve à un endroit spécifique dans la mémoire interne de l'ordinateur. Le nom de la variable nous permet alors d'accéder directement à cette valeur. | ||
+ | |||
+ | Adressage direct: Accès au contenu d'une variable par le nom de la variable. | ||
+ | |||
+ | Exemple | ||
+ | [[Fichier:adressage direct.gif]] | ||
+ | |||
+ | ==== Adressage indirect ==== | ||
== Adressage des tableaux== | == Adressage des tableaux== | ||
Version du 5 juin 2020 à 10:26
Votre Publicité sur le Réseau |
Traduction
Traductions
Définition
Domaine, Discipline, Thématique
Justification
Définition écrite
La plupart des langages de programmation offrent la possibilité d'accéder aux données dans la mémoire de l'ordinateur à l'aide de pointeurs, c.-à-d. à l'aide de variables auxquelles on peut attribuer les adresses d'autres variables.
En C, les pointeurs jouent un rôle primordial dans la définition de fonctions: Comme le passage des paramètres en C se fait toujours par la valeur, les pointeurs sont le seul moyen de changer le contenu de variables déclarées dans d'autres fonctions. Ainsi le traitement de tableaux et de chaînes de caractères dans des fonctions serait impossible sans l'utilisation de pointeurs.
En outre, les pointeurs nous permettent d'écrire des programmes plus compacts et plus efficients et fournissent souvent la seule solution raisonnable à un problème. Ainsi, la majorité des applications écrites en C profitent des pointeurs.
Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné.
La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des structures dynamiques, c'est-à-dire qui évoluent au cours du temps.
Ici, pointer signifie « faire référence à ». En pratique, un pointeur est une variable qui contient une valeur de type ‘adresse’ et pas la valeur d'un des types vus précédemment. C’est donc une variable dont le contenu est l'adresse mémoire d'une autre variable (objet), c'est-à dire la position en mémoire de cette autre variable (objet). Un pointeur permet donc de retrouver la valeur d'une variable (par son adresse) et d'y accéder. On dit aussi que le pointeur renvoie ou ‘pointe’ vers la variable concernée, cela via son contenu consistant en l’adresse de cette variable. La variable (objet) pointée peut être référencée via le pointeur.
Il faut signaler que l’on parle parfois de pointeur dont la valeur est constante (adresse constante). Par exemple, les noms des tableaux sont des pointeurs constants équivalents à l’adresse de la première composante du tableau concerné. |
Pointeurs en langage C - Historique (+)
Définition graphique
Concepts ou notions associés
Pointeurs en langage C - Glossaire / (+)
Présentation des Pointeurs
Comprendre la notion d'adresseun pointeur est une variable qui permet de stocker une adresse, il est donc nécessaire de comprendre ce qu'est une adresse. Lorsque l'on exécute un programme, celui-ci est stocké en mémoire,cela signifie que d'une part le code à exécuter est stocké, mais aussi que chaque variable que l'on a défini a une zone de mémoire qui lui est réservée, et la taille de cette zone correspond au type de variable que l'on a déclaré. En réalité la mémoire est constituée de plein de petites cases de 8 bits (un octet). Une variable, selon son type (donc sa taille), va ainsi occuper une ou plusieurs de ces cases (une variable de type char occupera une seule case, tandis qu'une variable de type long occupera 4 cases consécutives). Chacune de ces « cases » (appelées blocs) est identifiée par un numéro.Ce numéro s'appelle adresse. On peut donc accéder à une variable de 2 façons :
Il suffit donc de stocker l'adresse de la variable dans un pointeur (il est prévu pour cela) afin de pouvoir accéder à celle-ci (on dit que l'on « pointe vers la variable »). AdressageAdressage des variablesles deux modes d'adressage principaux sont: Adressage directDans la programmation, nous utilisons des variables pour stocker des informations. La valeur d'une variable se trouve à un endroit spécifique dans la mémoire interne de l'ordinateur. Le nom de la variable nous permet alors d'accéder directement à cette valeur. Adressage direct: Accès au contenu d'une variable par le nom de la variable. Adressage indirectAdressage des tableaux |
Erreurs ou confusions éventuelles
- Confusion entre Contenu '*' - Adresse '&'
- Confusion entre Passage par Valeur - Passage par Pointeur
- Erreur fréquente: Ne pas faire l'allocation dynamique pour une variable de type pointeur avant son utilisation
Questions possibles
- Quels sont les opérateurs possibles sur les pointeurs?
- Quels est la différence entre un tableau et un pointeur?
- Comment allouer un tableau en utilisant les pointeurs?
- A quoi sert la fonction malloc() et quand est-ce qu'on l'utilise?
- Quelle est la différence entre malloc() et calloc()?
- Que fait la fonction réalloc()?
- A quoi sert la fonction free()?
- Que signifie allocation dynamique?
- Qu'elle est la différence entre allocation dynamique et allocation statique?
Liaisons enseignements et programmes
Idées ou Réflexions liées à son enseignement
Aides et astuces
Education: Autres liens, sites ou portails
Bibliographie
Pour citer cette page: (en langage C)
ABROUGUI, M & al, 2020. Pointeurs en langage C. In Didaquest [en ligne]. <http:www.didaquest.org/wiki/Pointeurs_en_langage_C>, consulté le 28, décembre, 2024
- Pages utilisant des arguments dupliqués dans les appels de modèle
- Sponsors Education
- Informatique (Concepts)
- Langage de programmation (Concepts)
- Algorithmique (Concepts)
- Adressage Direct
- Adressage Indirect
- Variable
- Tableau
- Chaîne de caractère
- Allocation dynamique
- Concepts
- Pointeurs en langage C
- Pointeurs en langage C (Concepts)
- Fiche conceptuelle didactique