Bonjour,

Soit le code ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
 
void *essai1(void *p)
{
  void **q = (void **)p;
  return (*q);
}
 
void *essai2(void *p)
{
  double **q = (double **)p;
  return (*q);
}
 
int main(void)
{
  {/* 1er exemple */
    int x = 4;
    int *a = &x;
 
    printf("a=%p\n", (void *)a);
    printf("*p=%p\n", essai1(&a));
    printf("*p=%p\n\n", essai2(&a));
  }
  {/* 2eme exemple */
    char *a = "abCd";
 
    printf("a=%p\n", a);
    printf("*p=%p\n", essai1(&a));
    printf("*p=%p\n\n", essai2(&a));
  }
  return 0;
}
[Dans essai2, j'ai mis le type double comme j'aurais pu mettre n'importe quel autre type.] Pour chaque exemple, les adresses qui s'affichent sont identiques. Ma question est : les fonctions essai1 et essai2 ou tout autre fonction similaire me renverront-elles toujours a, quel que le type de l'objet vers lequel a pointe ?

Merci,

Candide