Quelqu'un peut-il m'expliquer pourquoi quand je l'alloue dynamique de mémoire avec et non p> calloc code> ou
masloc code> i déclarez:
3 Réponses :
Parce que dans le premier exemple, vous faites En d'autres termes, vous avez déclaré ARR comme un pointeur. MALLOC renvoie un pointeur à la mémoire allouée. Donc, vous "remplissez" arr avec cette valeur. Dans votre deuxième exemple, vous remplissez * ARR - à quoi arrondi - avec la valeur renvoyée par Malloc. P> Art code> le pointeur sur la mémoire. Dans le deuxième exemple, vous faites ce que
Art code> pointe vers le pointeur sur la mémoire allouée. P>
arr code> est un
int * code>, c'est-à-dire, c'est-à-dire "pointeur sur
int code>". Lorsque vous allouez de manière dynamique la mémoire à l'aide de
MALLOC code>, vous obtenez un pointeur qui pointe sur cette mémoire et doit l'affecter à une variable, dans ce cas,
arr code>. P>.
* arr code> (c'est-à-dire la déséroférence de
Art code>) serait un
int code>.
* arr code> est la valeur que
arr compte code> pointe, pas le pointeur (adresse) elle-même. p>
Dans ce code SNIPPET:
*arr = malloc(n * sizeof(int));