I have written a function in c that gives me the wrong size of the array inside the function, but correct outside. Cant understand why..
My function:
#define NELEMS(x) (sizeof(x) / sizeof(x[0]))
int check_val_is_valid(int32_t field_val, int value_array[], int32_t range_array[])
{
printf("value_array is : %d\n", value_array);
printf("Size of array: %zu\n", sizeof(value_array));
size_t size = 0;
if (sizeof(value_array) >= sizeof(range_array)){
size = NELEMS(value_array);
}
else{
size = sizeof(range_array);
printf("Size of array: %d\n", size);
}
printf("Size of array: %zu\n", size);
int i=0;
for(i=0; i < size; i++)
{
printf("Value of i: %d\n", value_array[i]);
if(value_array[i] == field_val)
{
printf("\n%d", value_array[i]);
return 1;
}
};
if (field_val < range_array[1] && field_val > range_array[0] )
{
return 1;
}
return 0;
}
Inside main:
int val = 1000;
int val_array[] = {1, 1000, 1234};
printf(" array: %d\n",val_array);
printf("Size of array: %d\n", sizeof(val_array));
printf("Size of array: %d\n", NELEMS(val_array));
int32_t rang_array[] = {0, 255};
if (!check_val_is_valid(val, val_array, rang_array)){
printf("The val is not valid!");
};
return 0;
From the terminal I get:
array: 6356692
Size of array: 12
Size of array: 3
value_array is : 6356692
Size of array: 4
Size of array: 1
Value of i: 1
The val is not valid!
Can't understand why the size of the array is different inside the function. How can i get the same size inside the function?