数组大小未传递给函数
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);
将数组传递给函数并在函数中使用 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);