Bonjour,
J'ai une petite question concernant les pointeurs et l'accès aux données pointées par ceux-ci.

Par exemple, je crée une petite structure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
typedef struct pair_int pair_s;
struct pair_int{
    int a;
    int b;
};
ensuite, dans un programme, je souhaite créé un tableau de pair_s au moyen de malloc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
pair_s *pair = malloc(sizeof(pair_s)*10);
Voici ma question: Quelle est la différence exacte entre les deux lignes ci-dessous? En fait, quand j'imprime les valeurs de ma pair, je n'obtiens pas le même résultat à la console.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
int i;
for(i=0;i<10;i++)printf("a:%i, b:%i\n",pair[i].a,pair[i].b); //ligne 1
for(i=0;i<10;i++)printf("a:%i, b:%i\n",pair+(sizeof(pair_s)*i)->a,pair+(sizeof(pair_s)*i)->b); //ligne 2
La ligne 2 me permet d'imprimer les bonnes valeurs mais logiquement, la ligne 1 devrait le faire aussi.

Quelqu'un a une idée???

Merci d'avance
Fonzy