可能的重复:
C 编程语言中数组的大小?
我正在尝试编写一个函数,如果数组中有值则返回 1。这是代码:
int inArrayInt(int iVal, int iArray[])
{
int i;
int arrayL = sizeof(*iArray) / sizeof(int);
int flag = 0;
for(i=0; i < arrayL; i++)
{
if(iVal == iArray[i])
{
flag = 1;
}
}
return flag;
}
问题是arrayL = sizeof(*iArray) / sizeof(int);
即使数组包含 20 个元素,其计算结果始终为 1。为什么?
因为当您将数组作为参数传递给函数时,它会衰减为指针。所以sizeof(array)
不会给你数组的大小,而是指针的大小。
您可以将数组大小设置为extra argument
,或将数组作为reference
这样 sizeof(array) 将为您提供正确的大小。 (详细信息在这里:什么是数组衰减?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)