Petite précision sur les pointeurs
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:
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:
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:
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