数组大小未传递给函数

时间:2015-02-23 08:31:15

标签: c++ arrays size

当将数组传递给函数并在函数中使用sizeof()时,它只返回单个元素的大小(4)。有没有办法来解决这个问题?我只限于使用数组,而不是矢量/模板。

void arraysize(int arr[]){
    cout << sizeof(arr) << endl;
}

int main(){
    int a[15];
    arraysize(a);                  //4
    cout << sizeof(a) << endl;     //60
}

输出:

4
60

2 个答案:

答案 0 :(得分:3)

您必须通过引用传递数组以保留大小信息:

void arraysize(int (&arr)[15]);

使用模板自动推断尺寸:

template <std::size_t N>
void arraysize(int (&arr)[N]);

因此,如果没有模板/ STL,您必须以某种方式传递大小信息:

void arraysize(int *arr, std::size_t size);

void arraysize(int *arr, int* end);

答案 1 :(得分:1)

您需要阅读array decay