Question de base C

Résolu/Fermé
trinity666 - 31 janv. 2005 à 22:12
 trinity666 - 1 févr. 2005 à 15:00
bonjour
j'aimerais savoir quand on a:
int *p;
int i=3;
*p=i;
à quoi correspond la valeur de p par rapport à celle de &p
que se passe t il si on fait p++ on incremente quelle adresse?
merci

2 réponses

Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120
31 janv. 2005 à 22:52
Salut,
Dejà ton code tel qu'il est contient une erreur (classique), à savoir que tu utilises le pointeur p avant de l'avoir initialisé.
Une solution possible est:
int *p;
int i = 3;
p = &i; 

Dans ce cas de figure la valeur de p est l'adresse de la variable i et la valeur de &p est l'adresse où est stockée la valeur de p.
Si tu fais p++ tu incrémentes la valeur de p soit ici adresse de i + taille d'un entier. Après cette opération et sur un système où un entier est stocker sur 4 octets, tu auras p = adresse de i +4 octets et &p inchangée.

(Ajout): Dans l'exemple que j'ai pris le fait de faire p++ nous ramènes à un pointeur non initialisé qui pointe donc n'importe où. Sans une opération d'allocation mémoire il ne faut pas écrire dans ce pointeur.

En espérant avoir été clair ;-)

A++
0
merci
0