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

(C) Utilité des pointeurs de pointeurs

[exit]
[exit]
Niveau 5
07 décembre 2005 à 18:32:34

Je m´interroge sur l´utilité des pointeurs de pointeurs : pourquoi ne pas utiliser un simple pointeur à chaque fois ?

dnob700
dnob700
Niveau 10
07 décembre 2005 à 18:41:28

un pointeur de pointeur est un simple pointeur ... vers un autre pointeur.

Lorsqu´une fonction doit modifier un de ses arguments, on lui passe un pointeur vers l´argument pour qu´elle puisse le modifier.

Mais si l´argument à modifier est déjà un pointeur, alors il faut lui passer un pointeur vers le pointeur.

[exit]
[exit]
Niveau 5
07 décembre 2005 à 18:46:39

Ca se tiens :-d

En gros c´est pour faire un truc du genre :

void allocation(int **ptr)
{
*ptr = malloc(sizeof int);
}

JeanYvesYves
JeanYvesYves
Niveau 10
07 décembre 2005 à 18:50:38

Tout a fait :)

ce que tu proposes est valide.

tu peux aussi considérer des tableaux de pointeurs, ou alors un pointeurs (donc finalement un tableau dynamique) qui stocke des adresses (tu auras ainsi encore une double indirection)

JeanYvesYves
JeanYvesYves
Niveau 10
07 décembre 2005 à 18:51:35

regarde mon tuto (cf ma carte)
chapitre E.2.

lag-it
lag-it
Niveau 10
07 décembre 2005 à 21:44:25

C´est très utile, notament pour une structure de pile...

ohunshadok
ohunshadok
Niveau 10
07 décembre 2005 à 22:54:28

utile aussi pour inserer dans des listes chainées.

dnob700
dnob700
Niveau 10
08 décembre 2005 à 21:20:07

et j´ai même mieux : les pointeurs de pointeurs ... de pointeurs.

j´ai écrit cette fonction tout à l´heure et j´ai pensé à ce topic donc là voici :

template<class T> void make_matrix(T*** ptr,int m,int n)
{
*ptr=new T*[m];
int i;
for (i=0;i<m;i++)
(*ptr)[i]=new T[n];
}

LGV
LGV
Niveau 28
09 décembre 2005 à 03:21:55

tu alloues des zones non contigues pour une bete matrice => TOUJOURS des tableaux a 1 dimension ; si vous avez besoin de structures non "rectangulaires" (m*n) ou "parallelepipediques" (m*n*o) etc, encapsulez dans des structures de donnees de plus haut niveau (ie. liste de tableau, tableau de listes, liste de listes, etc.). Vous pourrez pourrez mettre en place des gestions specifiques bien plus efficaces, tout en facilitant l´utilisation.

ohunshadok
ohunshadok
Niveau 10
10 décembre 2005 à 22:29:16

j´peux faire mieux : j´peux déclarer des pointeurs de pointeurs de pointeurs de pointeurs de pointeurs de pointeurs etc etc ^^

godrik
godrik
Niveau 30
10 décembre 2005 à 22:32:54

sur une application réel, je suis déjà monté a 5 etoile.
ca devient compliqué a gerer... :)

Kilyn_
Kilyn_
Niveau 10
11 décembre 2005 à 16:47:06

arf je n´ai jamais rien compris aux pointeurs. :malade: Vous n´auriez pas un cours pour les perdus comme moi ? :hap:

godrik
godrik
Niveau 30
11 décembre 2005 à 17:16:01

celui de jeanyvesyves doit bien expliquer ca...
sinon pour faire simple
un pointeur stocke l´adresse de n´importe quel variable
ainsi en ecrivant a cette adresse la, on ecrit sur la variable dont c´est l´adresse

TYPE var;
TYPE* point = &var;

  • point = fghjk;

on a var == fghjk;

deplus si tu as
void fnct (TYPE v)
{
v = fghjk;}

TYPE var = azerty;
fnct (var);
var == azerty;
alors que

void fnct (TYPE* po)
{

  • po = fghjk;

}

TYPE var = azerty;
TYPE* point = &var;
fnct (point);
var == fghjk;

cela reponds a ta question.

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