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++: pointeurs..

_[CONKER]_
_[CONKER]_
Niveau 10
16 mars 2004 à 18:27:44

bon, je suis arrivé au chapitre des pointeurs, je comprends comment ca fonctionne et tout ( du moins, je crois^^), mais ce ke je comprends pas, c´est a koi ca sert..
Pourkoi se compliker la vie a faire:
int i=5;
int* a=&
cout < < a < <;
( bon si c´est faux c´est ke j´ai pas tout compris^^)
au lieu de faire:
int i=5;
int a;
a=i;
cout < < a < <;

kkun peut-il m´expliker^^ ?

Mathrim
Mathrim
Niveau 8
16 mars 2004 à 18:33:33

L´intérêt du pointeur est d´avoir accès à la valeur contenue dans la variable, même si celle-ci change.
Ainsi, si tu écris:
int i=5;
int* a=& ;
i = 7;
cout < < *a < < ;

La valeur affichée sera toujours celle contenue dans la variable i, à savoir 7.

A l´inverse, dans le cas où tu écris:
int i=5;
int a;
a=i;
i = 7;
cout < < a < < ;

La valeur affichée sera 5.

Dans un programme aussi simple, utiliser un pointeur n´a pas grand intérêt. Par contre, lorsque tu crées une fonction, et que cette fonction doit modifier l´un de ses paramètres, il est nécessaire d´utiliser un pointeur.

Voilà, j´espère que je t´ai un peu éclairci le problème ; )

JeanYvesYves
JeanYvesYves
Niveau 10
16 mars 2004 à 18:36:07

La différence entre a dans ton exemple en haut et en bas, c´est que :

en haut : a contient l´adresse de i.
en bas : a contient une copie de i.

si tu fais : i = 7 apres ce que tu as fait :
en haut, *a te rendra 7.
en bas, a te rendra toujours 5.

Il y a une analogie entre pointeur et lien internet : a est un lien vers i.

Dans cet exemple simple, on ne voit pas pourquoi se compliquer la vie, mais dans des exemples plus avancés, ça sert :)

Tu t´en rendras compte le jour ou tu en auras vraiment besoin ! Pour le moment, c´est bien que tu saches que ça existe, continue ton apprentissage, ton besoin de pointeurs viendra plus tard :)

JeanYvesYves
JeanYvesYves
Niveau 10
16 mars 2004 à 18:37:37

Lol Mathrim, il n´y avait pas encore ton message quand j´ai commencé à répondre :)

Comme ça, ça fera double explication !

_[CONKER]_
_[CONKER]_
Niveau 10
16 mars 2004 à 18:39:51

ok merci a vous 2 :)
je vais continuer d´apprendre mais un truc me tracasse kan mm:
pourkoi alors on utilise pas directement la variable en elle même a la place du pointeur?

Mathrim
Mathrim
Niveau 8
16 mars 2004 à 18:40:37

J´aurais dû me douter que quelqu´un écrivait en même temps que moi :)

Altonfrere
Altonfrere
Niveau 10
16 mars 2004 à 18:42:52

un petit détail dans le 1er exemple donné par _[cOnkeR]_, c´est pas 7 mais l´adresse de i qui va être affichée . .. il a écrit cout < <a et non cout<<*a

enfin c´est juste une remarque :)

lag-it
lag-it
Niveau 10
16 mars 2004 à 20:50:27

_[cOnkeR]_, il est vrai que de prime abord, l´intérêt du pointeur semble limité, cependant tu t´en est peut être certainement déjà servi en utilisant un tableau. Purquoi ? parce que :

Soit ptr, un pointeur vers un int, les notations : *(ptr+x) et ptr[x] sont équivalentes, et oui : le nom du tableau n´est qu´un pointeur vers son premier élément.
Je ne sais pas si tu as déjà abordé l´arithmétique des pointeurs, mais essaye d´échanger cette notations pinteur déréférencé/tableau pour tester.

Sinon l´autre intérêt des pointeur réside dans la rapidité, en effet, si tu passes un structure ( je sais pas si t´as vu ) à une fonction normalement, le programme va en fait faire une copie de toute ta structure dans ta fonction, ce qui est très long et inutile, or en utilisant un pointeur, tu agis directement sur la structure originale et c´est donc plus rapide ( ce genre de problème n´existe pas pour les tableaux car ceux ci sont passés en appel par référence simulée ) .
Le pointeur est également la base de fonctionnement de l´orientation objet du c++ :)

_[CONKER]_
_[CONKER]_
Niveau 10
16 mars 2004 à 22:51:07

ok merci :)
j´ai vu les structures y´a longtps mais j´avais pas compris grand chose :nonnon:
je les verrai dans pas longtps :).
merci pour vos reponses, bonne nuit :)

lag-it
lag-it
Niveau 10
16 mars 2004 à 23:02:02

´nuit :)

Pour les structures :

typedef struct
{
int x;
int y;
} Test;

Test objet;
objet.x = 10;
objet.y = 2;
cout < < objet.x + objet.y < < endl;

En fait, cela marche comme un tableau, sauf qu´au lieu d´utiliser une notation d´indice ( relative à l´analogie avec les pointeurs ) , tu utilises directement le nom de la variable " membre" ( de la structure ) .
C´est comme si tu créais ton propre type ( genre int, float, . .. ) en combinant ceux existants ) .

_[CONKER]_
_[CONKER]_
Niveau 10
12 juillet 2004 à 19:21:30

Ah merci pour ta reponse lag-it, je ne l´avais pas vue ^^´.
En fait, j´ai relu le chapitre sur les pointeurs et j´y vois beaaaucoup plus clair.. Seulement voilà, il y a un truc que je ne comprends pas : Les pointeurs de fonction.
Je ne comprends pas comment utiliser les pointeurs de fonction. C´est surtout la syntaxe avec laquelle j´ai de la peine.. Et c´est encore pire quand on parle de tableau de pointeurs de fonction.. Quelqu´un pourrait m´expliquer parce que je suis un peu perdu là :( .
Merci d´avance :).

JeanYvesYves
JeanYvesYves
Niveau 10
12 juillet 2004 à 19:36:50

le mieux pour les pointeurs de fonction est de faire un typedef :)

typedef void ( *fonc)(int,int);

ou

typedef int ( *fonc)(int,int,char*);

comme tu veux ! !
ensuite tu t´en sers simplement !

void mafonc(int a,int b)
{
. ..
}

void affiche(int a,fonc f) / / implementation
{
f(a,1); / / appel de la fonc via le pointeur
}

affiche(2,mafonc); / / appel de la fonction

_[CONKER]_
_[CONKER]_
Niveau 10
12 juillet 2004 à 20:11:10

Argh mais je sais même pas comment on déclare un pointeur de fonction ^^´, ni comment ça s´utilise ^^.

JeanYvesYves
JeanYvesYves
Niveau 10
12 juillet 2004 à 20:54:37

mais enfin, je viens de te faire un exemple !
bon, je V essayer de t´en faire un mieux :

  1. include < stdio.h>

typedef void ( *fonc)(int)

void affiche(int a)
{
printf("nombre : %d\n",a);
}

void affiche2(int a)
{
printf("----- %d -----\n",a);
}

void test(fonc f)
{
int i;
for(i=0;i<10;i++)
{
f(i);
}
}

int main()
{
printf("premier affichage\n");
test(affiche);
printf("deuxieme affichage\n");
test(affiche2);
getchar();
return 0;
}

_[CONKER]_
_[CONKER]_
Niveau 10
12 juillet 2004 à 22:43:08

Ah c´est bon j´ai eu une illumination et je viens de comprendre ^^´.
Merci.

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