数组大小未传递给函数

Array size not passing to function

将数组传递给函数并在函数中使用 sizeof() 时,它只是 returns 单个元素的大小 (4)。有没有办法来解决这个问题?而且我仅限于使用数组,而不是 vectors/templates.

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

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

输出:

4
60

您需要阅读 array decay

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

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

使用模板自动推断大小:

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

所以如果没有 template/STL,您必须以某种方式传递尺码信息:

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

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