如何在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++中获取数组长度,并且能在任何地方工作?或者我是否需要总是传递大小?