Avatar ·

如何在C++中获取数组长度?sizeof与指针的问题

大家好!我是一名C++初学者,遇到了一个非常奇怪的问题。我需要知道数组中有多少个元素,但我的尝试都失败了。 我这样写: ```cpp int arr[] = {10, 20, 30, 40, 50}; int size = sizeof(arr) / sizeof(arr[0]); cout << "数组长度: " << size; // 输出5 — 正确 ``` 但是当我尝试在函数内部做同样的事情,将数组作为参数传递时,却得到了错误的结果: ```cpp void printArrayLength(int arr[]) { int size = sizeof(arr) / sizeof(arr[0]); cout << "数组长度: " << size; // 输出1或2,但不是5! } int main() { int myArray[] = {10, 20, 30, 40, 50}; printArrayLength(myArray); return 0; } ``` 为什么会这样?函数内部的sizeof(arr)给出的不是整个数组的大小,而是其他东西。我读过关于指针的内容,但不太明白这之间的关系。 有没有一种可靠的方法可以在C++中获取数组长度,并且能在任何地方工作?或者我是否需要总是传递大小?