Allocation dynamique

Signaler
Messages postés
91
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
31 août 2004
-
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005
-
je veux crée une variable dynamique
je fait donc un pointeur et tous marche bien sauf que quelque chose me chifone voila mon code

int* variable = NULL;
variable = new int(0);

pour lire la variable j'ai appris qu'il fallait ecrire comme ca avec le "*" par exemple:

tableau[*variable];

alors maintenant je veux l'incrementer je fait comment?
ca?
*variable++
ou ca?
variable++
vous pouvez aussi expliquer la difference svp ;)

4 réponses

Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
Tout depend ce que tu veit incrementer,
si tu veut incrementer l'entier (int), tu fais
"(*variable) ++;"
mais si tu veut incrementer le pointeur (pour aller au nombre suivant) tu fais
"variable ++;"
:-p :sleepy) :shy) :sleepy) :-p
Messages postés
91
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
31 août 2004

"aller au nombre suivant"
ca veux dire quoi exactement??
moi je veu que ma variable = 1 soit apres l'incrementation egal a 2
Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1
et bien c'est simple.
variable est un pointeur sur un entier.
donc si tu veux incrementer l'entier (comme dans ton exemple) et bien il faut que tu incrementes ce qui est pointé:

donc :
int * variable = new int(2); // varaiable pointe sur l'entier 2.
si tu fais :
int i=(*variable)++;
alors i vaut trois.
par contre si tu fais *(variable++) alors variable va pointer sur quelque chose qu'on ne onnait pas ici.
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

Bon petit cours sur les pointeurs, si mes souvenirs sont bons:

type *pointeur;

pointeur = adresse ou pointe le pointeur
&pointeur = adresse du pointeur
*pointeur = élément pointé par le pointeur ( du type type:))

ex:
int *a;
{
in b=10;
a=&b; // a pointe sur l'adresse de b
// a = adresse de b
// &a= adresse du pointeur // *a b10
a++ pointe sur le int apres b
*a++ => b= 11
l'etoile est prioritaire devant les autres symboles
donc *(a++) != *a++

JackosKing For EvEr