Question de base C

Résolu
trinity666 -  
 trinity666 -
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

  1. Ravachol Messages postés 568 Statut Membre 120
     
    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