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));