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

Une question C++ sur les pointeurs :)

sebcopin
sebcopin
Niveau 10
01 mars 2004 à 10:53:46

slt tlm,

J´apprend le C++ à l´aide d´un bon bouquin très bien foutu mais je suis arrivé à un chapitre où il parle des pointeurs, il y a 35 pages sur ceux-ci. :)
Mais je ne comprend pas bien leur utilité et comment les utiliser ( quand doit-on les mettre etc...). ?
Sont-ils vraiment importants dans la programmation C++ ?

MrGoTo
MrGoTo
Niveau 8
01 mars 2004 à 11:05:25

Les pointeurs permettent par exemple de modifier la regle de portée des variables ou de changer une variables dans un fonction de type void.
Oui ils sont super importants.

sebcopin
sebcopin
Niveau 10
01 mars 2004 à 11:29:54

Bon je vais essayer de comprendre tout ça, je trouve ça assez compliqué pour le moment adresse memoire etc...

Mais pourquoi ds le bouquin il initialise le pointeur par exemple :

unsigned short int * pPointeur = 0;

Hum je cromprend pas de trop, sa ressemble à une variable mais s´en ai pas une. Sa s´initialise à 0. Bah un pointeur pointe vers une adresse memoire ? Pas vers 0 ? Tin chui à la rammasse...

Altonfrere
Altonfrere
Niveau 10
01 mars 2004 à 11:41:09

Pour essayer de faire simple :

Imagine une rue avec des maisons, chacune d´entre elles a une adresse unique genre n°1234 rue de Bidule Machin etc... ok ?
Si tu fais l´analogie entre la mémoire et la rue tu comprendras que pour une adresse donnée correspond un ensemble de données plus ou moins grand.

Un pointeur est une variable qui contient l´adresse d´une donnée.

On le note comme ceci :

int *ptr;

int étant le type de la variable référencé

  • : symbole représentant la notion de pointeur

ptr : le nom utilisé pour nommer ce pointeur

ptr est donc un pointeur sur une variable de type entier ( int)

Pour info : sur nos machines 32 bits les variables de type pointeur sont de taille fixe : 4 octets ( quel que soit le type des données pointées)

Altonfrere
Altonfrere
Niveau 10
01 mars 2004 à 11:43:28

Pour l´initialisation à 0, cela se fait courament cela permet de savoir si un pointeur est " correct" ou non. Le pointeur nul est incorrect car il s´agit d´une zone protégée de la mémoire.

Ce qui te permet de tester par la suite :

if ( ptr ! = NULL)
{
/ / alors le pointeur est correct
/ / ( mais c´est pas toujours le cas)
}
else
{
/ / pointeur incorrect . ..
}

sebcopin
sebcopin
Niveau 10
01 mars 2004 à 12:21:29

ok ok je comprend un peu mieux merci :)

mais quel est le véritable avantage des pointeurs ? Pourquoi est-il conseillé d´en utiliser ?

Altonfrere
Altonfrere
Niveau 10
01 mars 2004 à 12:30:17

- c´est un moyen de pouvoir allouer de la mémoire dynamiquement ( lorsque le programme s´exécute)

- ou encore transmettre des variables en paramètres à des fonctions ( bcp plus rapidement)

char Tableau[100];

version " bourrin" :

void UtiliserTableau(char _Tableau[100])
{
. ..
}

version plus adaptée :

void UtiliserTableau(char *_Tableau)
{
. ..
}

- accélérer les traitements : exemple lors d´un tri d´un ensemble de données il est beaucoup plus rapide de manipuler les pointeurs vers les éléments d´une liste que les données en elle même :

typedef struct
{
long Var1;
long Var2;
long TabVar[100];
} tElement;

plutôt que de faire ceci :

tElement TabElements[1000];

vaut mieux faire cela :

tElement *pTabElements[1000];

trier ( 1000 * 4 octets) et beaucoup plus rapide que de trier ( 1000 * ( 4 + 4 + 4*100)) octets :)

- etc...

sebcopin
sebcopin
Niveau 10
01 mars 2004 à 14:13:31

merci beaucoup je crois avoir saisi l´essentiel, je continue le cours :)

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