如何解决C嵌入:使用sizeof时在函数内部获取错误的数组大小
我在 c 中编写了一个函数,该函数在函数内部给出了错误的数组大小,但在外部正确。不明白为什么..
我的功能:
#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;
}
内部主要:
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;
从终端我得到:
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!
无法理解为什么函数内部的数组大小不同。如何在函数内部获得相同的大小?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。