[C] Comprehension d'un pointeur en C

Comprehension d'un pointeur en C [C] - C - Programmation

Marsh Posté le 27-11-2006 à 16:01:17    

Bonjour,
 
Voilà, je reprends la programmation en C et j'ai un doute sur la syntaxe suivante :
 

Code :
  1. static void bit_advance (bit_stream *bs, int n, unsigned char **p)
  2. {
  3.    ...
  4.    (*p) += 2 ;
  5.    ...
  6. }


 
Le pointeur p est incrementé de 2 ou c'est le contenu ? voir les deux ?
 
Merci par avance ^^
 
ps : Rétroanalyse d'un décompresseur RNC.

Reply

Marsh Posté le 27-11-2006 à 16:01:17   

Reply

Marsh Posté le 27-11-2006 à 16:06:28    

Polux-Fr a écrit :

Code :
  1. static void bit_advance (bit_stream *bs, int n, unsigned char **p)
  2. {
  3.    (*p) += 2 ;
  4. }


Le pointeur p est incrementé de 2 ou c'est le contenu ? voir les deux ?


La valeur pointée par p est incrémentée de 2. p est inchangé.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 27-11-2006 à 16:07:05    

Salut,
 
Tu ajoutes 2 à l'adresse du pointeur situé à **p (puisque c'est un pointeur sur un pointeur sur un unsigned char, ou des tableaux de pointeurs, ou un mélange des 2 ;))

Reply

Marsh Posté le 27-11-2006 à 16:09:56    

Indice: jette un oeil à une table de référence des opérateurs avec leurs priorités respectives. A priori, c'est la variable à l'adresse pointée par p qui est incrémentée.

 

Sinon je pense qu'on aurait:

Code :
  1. *(p += 2)
 

Edit: j'aime les toasts [:benou_grilled]

Message cité 1 fois
Message édité par Chaos Intestinal le 27-11-2006 à 16:10:25
Reply

Marsh Posté le 27-11-2006 à 16:16:30    

Merci à vous !!

Reply

Marsh Posté le 27-11-2006 à 22:18:09    

Chaos Intestinal a écrit :

Sinon je pense qu'on aurait:

*(p += 2)



 
Hum... dans ce cas on aura obligatoirement un traitement quelconque de l'élément pointé style "*(p+=2)=..."
Ensuite, il sera plus clair pour tout le monde d'écrire

p+=2;
*p=...;


Message édité par Sve@r le 27-11-2006 à 22:26:50

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed