Calcul de la taille d'un tableau

Je suis en utilisant la macro suivante pour le calcul de la taille d'un tableau:

#define G_N_ELEMENTS(arr) ((sizeof(arr))/(sizeof(arr[0])))  

Cependant je vois une différence dans la valeur calculée par ça quand j'évaluer la taille d'un tableau dans une fonction (mauvaise valeur calculée), par opposition à l'endroit où la fonction est appelée (valeur calculée). Code + sortie ci-dessous. Des idées, des suggestions, des conseils et coll. bienvenue.

DP

#include <stdio.h>

#define G_N_ELEMENTS(arr) ((sizeof(arr))/(sizeof(arr[0])))

void foo(int * arr) //Also tried foo(int arr[]), foo(int * & arr) 
                    //- neither of which worked
{
   printf("arr : %x\n", arr);
   printf ("sizeof arr: %d\n", G_N_ELEMENTS(arr));
}

int main()
{
   int arr[] = {1, 2, 3, 4};

   printf("arr : %x\n", arr);
   printf ("sizeof arr: %d\n", G_N_ELEMENTS(arr));

   foo(arr);
}

De sortie:

arr : bffffa40
sizeof arr: 4
arr : bffffa40
sizeof arr: 1

source d'informationauteur