CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Language Algo] Pointeur de structure

CommanderShep
CommanderShep
Niveau 21
19 novembre 2014 à 19:05:15

Bonsoir :)

Je lisais mon cours d'info et je suis tombé sur un pépin:

"Exemple d'affectation des champs d'une enregistrement manipulé via un pointeur:

Variable
individu : t_personne;
pt_personne : pointeur(t_personne);

"

Sachant que t_personne est une structure de données contenant le nom et l'age d'une personne.

Je ne comprends pas la ligne "pt_personne : pointeur(t_personne)". Logiquement, pt_personne contient l'adresse de t_personne non? Or comment il peut y avoir une adresse alors que t_personne est une structure composées de 2 variables?

Merci d'avance pour votre aide :ok:

_viper_
_viper_
Niveau 10
19 novembre 2014 à 19:10:15

Il faut faire preuve d'un peu d'abstraction et voir la structure comme une variable à peu près comme les autres... A ceci près qu'on ne peut pas effectuer les mêmes opérations avec.

Ainsi, ta structure est bien rangée quelque part en mémoire, à une adresse. Lorsque ton programme veut y accéder, il va voir à cette adresse et comme il sait qu'il s'agit bien d'une structure et non d'un réel, par exemple, il va savoir comment interpréter les données.
Il ne faut pas oublier que pour TOUS les types, même natifs, les données sont interprétées vu qu'il existe plusieurs façon de les ranger en mémoire. La structure n'est qu'un type de données plus complexe.

La façon dont sont rangées les champs de la structure en mémoire dépend de l'implémentation mais en général, le premier champ est rangé à l'adresse la plus petite et c'est cette adresse qui fait office d'adresse pour la structure (à confirmer néanmoins).

CommanderShep
CommanderShep
Niveau 21
19 novembre 2014 à 19:13:10

Merci pour ta réponse, donc si j'ai bien compris pt_personne : pointeur(t_personne) signifie que pt_personne contient l'adresse de la structure t_personne?

_viper_
_viper_
Niveau 10
19 novembre 2014 à 19:16:39

Voilà. Une zone mémoire est définie pour contenir ta structure de type t_personne (la variable est "individu", t_personne est le type). L'adresse de cette zone mémoire est contenue dans le pointeur "pt_personne".

A l'intérieur de cette zone mémoire, on retrouve les 2 sous-variables (les champs de la structure) que sont le nom (une chaine de caractères) et l'age (un entier). La façon dont ces deux champs sont organisés dans la zone mémoire ne nous importe pas en général.

CommanderShep
CommanderShep
Niveau 21
19 novembre 2014 à 19:21:55

Donc en quelque sorte, p_personne pointe vers individu qui de type t_personne ?

_viper_
_viper_
Niveau 10
19 novembre 2014 à 22:27:00

C'est pas en quelque sorte. C'est exactement ça. Le fonctionnement est le même que pour une variable de type entier ou réel, par exemple.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment