为什么sizeof运算符在传递给方法的数组上使用时返回错误的值?

时间:2014-12-06 12:26:24

标签: c++

int size(int arr1[])
{
int size1=sizeof(arr1)/sizeof(int);
cout<<size1<<endl;
return size1;
}
void main()
{
    int b[]={1,2,3,4,5};
    int size2 = size(b);
    cout<<size2<<endl;
    for (int i=0;i<size2;i++)
    {
        cout<<b[i];
    }
}

我已将b []函数放入size()并检查大小然后返回值。 然而,它只返回1作为答案。 任何人都可以帮我解决这个问题。

C ++的初学者

1 个答案:

答案 0 :(得分:2)

函数中的

sizeof(arr1)返回指针的大小,而不是整个数组的大小 这就是语言的方式。

您必须确定没有sizeof的数组大小:
使用数字传递第二个参数,或以某种方式填充数组 你可以找到结束因为某个值存在(而不是其他地方)